タグ付けされた質問 「cmake」

CMakeは、クロスプラットフォームのオープンソースビルドシステムジェネレーターです。いくつかの統合開発環境用のネイティブmakefile、忍者ビルド、プロジェクトファイルなどのビルドシステム用のファイルを生成します。


7
CMakeの新しいGCCパスを指定する方法
私のOSはcentosで、パスにデフォルトのgccがあります/usr/bin/gcc。しかし、それは古いので、新しいバージョンのgccが必要です。だから私は新しいパスに新しいバージョンをインストールします/usr/local/bin/gcc。 しかし、実行cmakeすると、古いバージョンのgcc path(/usr/bin/gcc)が使用されます。gccを新しいパス(/usr/local/bin/gcc)に指定するにはどうすればよいですか。 私は、上書きしようとしてい/usr/bin/gccて/usr/local/bin/gcc、それが動作しません。
122 gcc  cmake 

1
CMAKEで-fPICコンパイラオプションを追加する慣用的な方法は何ですか?
私はこれを行うために少なくとも3つの方法に出くわしており、どちらが慣用的な方法であるか疑問に思っています。これは、静的ライブラリに対してほぼ普遍的に行う必要があります。CMakeのMakefileジェネレーターがこれを静的ライブラリーに自動的に追加しないことに驚いています。(私が何かを逃していない限り?) target_compile_options(myLib PRIVATE -fPIC) add_compile_options(-fPIC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic") 他にもバリエーションがあると思います。(もし見つけたら私の質問を編集してください) この質問への答えを知っている場合、CMakeLists.txtファイルを変更せずに、サードパーティのCMakeプロジェクトをこのフラグでコンパイルする方法があるかどうかもわかりますか?そのフラグがない静的ライブラリに出くわしました。静的ライブラリを動的ライブラリにコンパイルするときに問題が発生します。 あなたが得る: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
119 c++  c  cmake 

27
CMakeがVisual C ++コンパイラを見つけられない
Visual Studio 2015をインストールし、以前のプロジェクトでCMakeを実行した後、Cコンパイラが見つからなかったことを示すCMakeエラー。 The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_CXX_COMPILER could be found. cl.exeVisual Studioフォルダーで検索しましたC:\Program Files\Microsoft Visual Studio 14.0が、見つかりませんでした。 Visual Studio 2015のWindowsで動作するようにCMakeを設定するにはどうすればよいですか?

12
CMakeがOpenSSLライブラリを見つけることができません
コマンドラインでcmakeを実行すると、cmakeを使用してソフトウェアをインストールしようとしています。 このファイルで次のエラーが発生します。CMakeLists.txt--------行---> find_package( OpenSSLが必要):- cmake .. -- Could NOT find Git (missing: GIT_EXECUTABLE) ZLib include dirs: /usr/include ZLib libraries: /usr/lib/arm-linux-gnueabihf/libz.so Compiling with SSL support CMake Error at /usr/local/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR) …
118 openssl  cmake 

3
最もシンプルだが完全なCMakeの例
どういうわけか私はCMakeの動作に完全に混乱しています。CMakeがどのように記述されることを意図しているかを理解するようになるたびに、それは私が読んだ次の例では消えます。私が知りたいのは、自分のプロジェクトをどのように構成すればよいのかということです。これにより、私のCMakeが将来最小限の保守を必要とするだけです。たとえば、他のすべてのsrcフォルダーとまったく同じように機能する新しいフォルダーをsrcツリーに追加するときに、CMakeList.txtを更新したくありません。 これが私のプロジェクトの構造を想像する方法ですが、これはほんの一例です。推奨される方法が異なる場合は、教えてください。方法も教えてください。 myProject src/ module1/ module1.h module1.cpp module2/ [...] main.cpp test/ test1.cpp resources/ file.png bin [execute cmake ..] ちなみに、私のプログラムはリソースがどこにあるかを知っていることが重要です。推奨されるリソース管理方法を教えてください。「../resources/file.png」で自分のリソースにアクセスしたくない
117 c++  cmake  project-setup 

3
Cmake vs makeサンプルコード?
いずれのサンプルのコードがあった場合、私は思っていたMakefileS( make)とは、CMakeLists.txt(cmake)の両方が(唯一の違いは、1がで書かれているということで同じことを行うことmakeや、他の中cmake)。 「cmake vs make」を探してみましたが、コードの比較は見つかりませんでした。たとえ単純なケースであっても、違いを理解することは本当に役に立ちます。
117 makefile  cmake 

6
CMakeで警告レベルを設定する方法は?
どのように設定して警告レベルのためのプロジェクト使用して(全体ではなくソリューション)CMakeのを?Visual StudioとGCCで動作するはずです。 さまざまなオプションを見つけましたが、ほとんどが機能していないか、ドキュメントと一致していません。

5
CMake出力/ビルドディレクトリ
私はCMakeにかなり慣れていないので、その使用方法に関するいくつかのチュートリアルを読み、3つの異なるコンパイラー用のプログラムを作成するために、CMakeスクリプトの複雑な50行を書きました。これで、CMakeに関する私の知識はすべて終わります。 私の問題は、プログラムを作成するときに、そのフォルダーに触れたり、変更したりしたくないソースコードがあることです。すべてのCMakeおよびmake出力ファイルとフォルダーをに入れたい../Compile/ので、CMakeスクリプトのいくつかの変数をそのために変更しました。ラップトップで次のようなことをしたとき、それはしばらくの間機能しました: Compile$ cmake ../src Compile$ make それで、私が今いるフォルダーにきれいな出力がありました。それがまさに私が探しているものです。 今、私は別のコンピューターに移動し、CMake 2.8.11.2を再コンパイルしましたが、ほぼ正方形に戻りました!それは常にsrc私のものCMakeLists.txtが置かれているフォルダーに事をコンパイルします。 CMakeスクリプトでディレクトリを選択する部分は次のとおりです。 set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/) set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir}) set(CMAKE_BUILD_FILES_DIRECTORY ${dir}) set(CMAKE_BUILD_DIRECTORY ${dir}) set(CMAKE_BINARY_DIR ${dir}) SET(EXECUTABLE_OUTPUT_PATH ${dir}) SET(LIBRARY_OUTPUT_PATH ${dir}lib) SET(CMAKE_CACHEFILE_DIR ${dir}) そして今、それは常に終わります: -- Build files have been written to: /.../src …
115 c++  build  makefile  cmake  output 

5
CMake:外部プロジェクトを構築してそのターゲットを含める方法
静的ライブラリをターゲットとしてエクスポートするプロジェクトAがあります。 install(TARGETS alib DESTINATION lib EXPORT project_a-targets) install(EXPORT project_a-targets DESTINATION lib/alib) ここで、プロジェクトAをプロジェクトBの外部プロジェクトとして使用し、ビルドされたターゲットを含めます。 ExternalProject_Add(project_a URL ...project_a.tar.gz PREFIX ${CMAKE_CURRENT_BINARY_DIR}/project_a CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> ) include(${CMAKE_CURRENT_BINARY_DIR}/lib/project_a/project_a-targets.cmake) 問題は、プロジェクトBのCMakeListsを実行したときに、インクルードファイルがまだ存在しないことです。 ビルドを外部プロジェクトに依存させる方法はありますか? 更新:この問題と、私が遭遇したその他の一般的な問題に基づいて、 CMake by Exampleの短いチュートリアルを書きました。

2
CMakeにコマンドラインオプションを追加する
CMakeを使用して大規模なライブラリを構築しています。ビルドプロセスの特定の部分をユーザーが選択的に有効/無効にできるようにしたいと考えています。 たとえば、ユーザーが次のように入力できるように、CMakeビルドにコマンドラインオプションを追加するにはどうすればよいcmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..ですか。 どうやらOPTIONキーワードはCMake GUIから設定できる変数を作成しますが、コマンドラインからこれを行う方法を理解できません。

6
CMakeを使用してC ++プログラムをBoostにリンクする方法
UbuntuでプログラムをBoostライブラリにリンクするには、CMakeファイルはどのように見えるべきですか? 実行中に表示されるエラーmake: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' メインファイルは本当にシンプルです: #include <boost/program_options/options_description.hpp> #include <boost/program_options/option.hpp> using namespace std; #include <iostream> namespace po = boost::program_options; int main(int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ; return 0; } 私はなんとかやってきた。CMakeファイルに追加した唯一の行は次のとおりです。 target_link_libraries( my_target_file ${Boost_PROGRAM_OPTIONS_LIBRARY} )
109 c++  boost  cmake 

3
単一ファイルのコンパイルフラグを上書きする
プロジェクトをコンパイルするためにフラグのグローバルセットを使用したいと思います。つまり、最上位のCMakeLists.txtファイルで次のように指定しました。 ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) ただし、サブディレクトリ内の特定のファイル(たとえば、 "foo.cpp"としましょう)については、コンパイルフラグを切り替えて-Weffc ++(変更できない商用ライブラリが含まれている)を適用しないようにします。-Wallのみを使用するように状況を簡略化するために、私は次のことを試みました。 SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) 、動作しませんでした。私も試しました SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) そして ADD_EXECUTABLE( foo foo.cpp ) SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall ) 、どちらも機能しませんでした。 最後に、私はこの定義を削除してみました: REMOVE_DEFINITIONS( -Weffc++ ) ADD_EXECUTABLE( …

11
CMakeを使用して、CTestから詳細な出力を取得するにはどうすればよいですか?
CMakeを使用してプロジェクトをビルドしています。Boostユニットテストフレームワークを使用しているユニットテストバイナリを追加しました。この1つのバイナリには、すべての単体テストが含まれています。CTestが実行するバイナリを追加しました。 ADD_EXECUTABLE( tftest test-main.cpp ) ENABLE_TESTING() ADD_TEST( UnitTests tftest) ただし、Visual Studioのビルド出力には、CTestの実行結果のみが表示されます。 Start 1: UnitTests 1/1 Test #1: UnitTests ................***Failed 0.05 sec 0% tests passed, 1 tests failed out of 1 失敗したテストを確認できないため、これはあまり役に立ちません。コマンドラインからctestを手動で実行--verboseすると、実際に何が失敗したかを示すBoostユニットテストの出力が表示されます。 1: Test command: tftest.exe 1: Test timeout computed to be: 9.99988e+006 1: Running 4 test cases... 1: test-main.cpp(20): error …
109 cmake  ctest 

8
CMAKEのOS固有の手順:方法
私はCMAKEの初心者です。以下は、mingw環境ウィンドウでうまく機能する単純なcmakeファイルです。問題は明らかにtarget_link_libraries()、libwsock32.aをリンクしているCMAKEの機能にあります。Windowsではこれが機能し、結果が得られます。 ただし、予想通り、Linuxでは、Linux OSにはないもの/usr/bin/ldを探します-lwsock32。 私の問題は、Linux OSでwsock32ライブラリをリンクしないようにCMAKEにどのように指示するのですか? どんな助けでも大歓迎です。 私のシンプルなCMakeファイル: PROJECT(biourl) set (${PROJECT_NAME}_headers ./BioSocketAddress.h ./BioSocketBase.h ./BioSocketBuffer.h ./BioSocketCommon.h ./BioSocketListener.h ./BioSocketPrivate.h ./BioSocketStream.h ./BioUrl.h BioDatabase.h ) set (${PROJECT_NAME}_sources BioSocketAddress.C BioSocketBase.C BioSocketCommon.C BioSocketStream.C BioUrl.C BioDatabase.C ) add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_headers} ${${PROJECT_NAME}_sources} ) # linkers #find_library(ws NAMES wsock32 PATHS ${PROJECT_SOURCE_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH) target_link_libraries(${PROJECT_NAME} bioutils wsock32) install (TARGETS ${PROJECT_NAME} RUNTIME …
108 c++  linux  cmake  mingw  portability 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.