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

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

1
CMAKE_CURRENT_SOURCE_DIRとCMAKE_CURRENT_LIST_DIRの違い
Wikiから: CMAKE_CURRENT_SOURCE_DIR これは、現在処理されているCMakeLists.txtがあるディレクトリです。 CMAKE_CURRENT_LIST_DIR (2.8.3以降)これは、現在処理されているリストファイルのディレクトリです。 ドキュメントから: CMAKE_CURRENT_SOURCE_DIR:現在処理中のソースディレクトリへのパス。これは、現在cmakeによって処理されているソースディレクトリへの完全パスです。 CMAKE_CURRENT_LIST_DIR:現在処理中のリストファイルの完全なディレクトリ。CMakeがプロジェクトのリストファイルを処理するとき、この変数は常に、現在処理されているリストファイル(CMAKE_CURRENT_LIST_FILE)が配置されているディレクトリに設定されます。値には動的スコープがあります。CMakeは、ソースファイル内のコマンドの処理を開始すると、この変数をこのファイルが配置されているディレクトリに設定します。CMakeは、ファイルからのコマンドの処理を完了すると、以前の値を復元します。したがって、マクロまたは関数内の変数の値は、マクロまたは関数の定義を含むファイルのディレクトリではなく、呼び出しスタックの一番下のエントリを呼び出すファイルのディレクトリです。 これらの変数はどのような状況で異なる値を保持しますか?
105 cmake 



19
CMakeLists.txt:30(プロジェクト)でのCMakeエラー:CMAKE_C_COMPILERが見つかりませんでした
私は、CMakeを使用してVisual Studioソリューションを作成し、最新バージョンのasepriteをコンパイルしようとしています。 No CMAKE_C_COMPILER could be found. No CMAKE_CXX_COMPILER could be found. すでにGCCをダウンロードしており、Visual Studio 2015を使用しています。 私はこのチュートリアルに従っています: https://github.com/aseprite/aseprite/blob/master/INSTALL.md


4
CMakeを使用するにはどうすればよいですか?
私はopencvをコンパイルするためにCMakeを使用しようとしています。 チュートリアルを読んでいますが、CMakeListsファイルとは何か、CMakeのGUIにどのように接続されているのか理解できません。 また、メイクファイルとは何か理解できませんでした。CMakeListsと同じですか? そして、最終的に私がvisual-studioで開いたのはどのファイルですか?
102 c++  visual-studio  cmake 

1
CMaketarget_link_librariesインターフェースの依存関係
私はCMakeを初めて使用し、に関連するPUBLIC、PRIVATE、およびINTERFACEキーワードと少し混乱していtarget_link_libraries()ます。ドキュメントには、1つのコマンドでリンクの依存関係とリンクインターフェイスの両方を指定するために使用できると記載されています。 リンクの依存関係とリンクインターフェイスは実際にはどういう意味ですか?
99 cmake 

9
CMakeを使用してDLLファイルを実行可能ファイルと同じフォルダーにコピーする方法
CMakeを使用して、SVNでソースのVisual Studioファイルを生成します。現在、私のツールでは、いくつかのDLLファイルが実行可能ファイルと同じフォルダーにある必要があります。DLLファイルは、ソースと同じフォルダーにあります。 CMakeLists.txt生成されたVisual Studioプロジェクトがリリース/デバッグフォルダーに特定のDLLファイルを既に持っているか、コンパイル時にそれらをコピーするように変更するにはどうすればよいですか?
98 dll  cmake 

7
CMakeを使用してソースディレクトリからバイナリディレクトリにファイルをコピーする
CLionで簡単なプロジェクトを作成しようとしています。CMake(ここでは新しい)を使用して、プロジェクト(またはなんらかの種類)をビルドするためのMakefileを生成します。 コードを実行するたびに、非プロジェクトファイル(ある種のリソースファイル)をバイナリディレクトリに転送するだけです。 そのファイルにはテストデータが含まれており、アプリケーションはそれを開いて読み取ります。私はそうするためにいくつかの方法を試しました: 経由 file(COPY ... file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/input.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/input.txt 見栄えは良いですが、それは一度だけ動作し、次の実行後にファイルを再コピーしません。 経由 add_custom_command OUTPUT バージョン add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/input.txt COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input.txt ${CMAKE_CURRENT_BINARY_DIR}/input.txt) TARGET バージョン add_custom_target(foo) add_custom_command( TARGET foo COMMAND ${CMAKE_COMMAND} copy ${CMAKE_CURRENT_BINARY_DIR}/test/input.txt ${CMAKE_SOURCE_DIR}) しかし、どれも機能しません。 何が悪いのですか?
98 cmake 

3
CMAKE_INSTALL_PREFIXの使い方
デフォルトの/ usr / localの代わりに/ usrにインストールを作成して、インストールターゲットでMakefileを生成したい。ビルドディレクトリがソースサブディレクトリで実行されていると想定して、次のコマンドを実行します。 cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr .. CMakeCache.txtには以下が含まれます:CMAKE_INSTALL_PREFIX:PATH=/usr(OK?) 今私は実行します: 作る インストールする すべてのファイルは引き続きusr / localにインストールされます。なにが問題ですか? 編集:どのCMakeLists.txtプロジェクトファイルにもCMAKE_INSTALL_PREFIXはありません。cmakeを実行する前に、出力ディレクトリからすべてを削除します。CMakeLists.txtのインストールディレクティブは次のようになります。 install(TARGETS mylibrary DESTINATION lib)

3
コマンドラインでCMakeoption()を設定する方法
以下を含むCMakeLists.txtを作成しました project(P4V) cmake_minimum_required(VERSION 2.6) option(BUILD_STATIC_LIBS "Build the static library" ON) option(BUILD_SHARED_LIBS "Build the shared library" ON) option(BUILD_TESTS "Build test programs" OFF) include_directories(${CMAKE_SOURCE_DIR}/include) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) set(CMAKE_BUILD_TYPE Release) add_subdirectory(src) if(BUILD_TESTS) add_subdirectory(tests) endif(BUILD_TESTS) デフォルトではBUILD_TESTSはオフですが、CMake GUIを使用せずに、cmakeコマンド自体を使用してオンにするにはどうすればよいですか?以下を試しましたが、うまくいきません cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON

3
ソースディレクトリの静的ライブラリにリンクするようにCMakeに指示するにはどうすればよいですか?
主にCMakeの経験を積むために、CMakeに変換しようとしているMakefileを使用した小さなプロジェクトがあります。この例の目的のために、プロジェクトにはソースファイル(C ++、言語は特に関連性があるとは思いませんが)と他の場所からコピーした静的ライブラリファイルが含まれています。議論のために、ライブラリのソースコードが利用できないと仮定します。.aファイルと対応するヘッダーしかありません。 私の手作りのMakefileには、次のビルドルールが含まれています。 main: main.o libbingitup.a g++ -o main main.o libbingitup.a これは正常に動作します。これを再現するようにCMakeに指示するにはどうすればよいですか?もちろん、文字通りこの正確なmakefileではありませんが、同等のリンクコマンドを含むものです。私は明白ですが素朴な方法を試しました add_executable(main main.cpp libbingitup.a) または add_executable(main main.cpp) target_link_libraries(main libbingitup.a) link_directories(.)またはとさまざまなものadd_library(bingitup STATIC IMPORTED)などこれまでのところ何も成功したリンクでの結果という。私は何をすべきですか? バージョンの詳細:Linux上のCMake 2.8.7(Kubuntu 12.04)とGCC 4.6.3

8
GLFW 3をビルドしてインストールし、Linuxプロジェクトで使用する方法
GLFW3 昨夜、Linux向けのGLFW 3パッケージをソースからビルドしようとして遅くまで働いていました。このプロセスには、CMakeに不慣れであるという理由と、GLFWに不慣れであるという理由で、合計3時間という非常に長い時間がかかりました。 この投稿が、昨日の問題からあなたを救ってくれることを願っています!私は短い記事を書いて、うまくいけばあなたの人生の数時間を救うべきだと思いました... #glfw IRCチャンネルの「urraka」、「b6」、「niklas」のおかげで、glfwバージョン3.0.1を動作させることができました。 これは簡単なプロセスではないことがわかりました(確かに私にとっては、私は専門家ではありません)。glfw3、特にCMakeでのセットアップに関するWeb上のドキュメントはあまりないためです。 これを質問と回答のセクションに分割するように依頼されたので、それを実行しました。回答の部分は以下にあります。 あなたはGLFWのメンテナーですか、それともGLFWチームのメンバーですか? GLFW3のメンテナーのいずれかがこれを見つけた場合、私のメッセージは、「Windows、Mac OS X、およびLinuxでのGLFW3のセットアップ」セクションをWebサイトに追加してください!GLFWを使用してプログラムを作成するのは非常に簡単です。オンラインドキュメントは非常に優れており、利用可能なすべてのクラスとモジュールをすばやくスキャンすれば準備完了です。ここで取り上げたテストプロジェクトの例も非常に優れています。私が見つけた2つの主な問題は、1つはシステムにGLFW3をセットアップする方法、もう1つはGLFW3プロジェクトをビルドする方法でした。これら2つのことは、おそらく、専門家でない人には十分に明確ではありません。 編集する 本日(日付:2014-01-14)の概要を確認したところ、GLFWのWebサイトが最後に確認してから大幅に変更されているように見え、GLFWのコンパイルとGLFWを使用したプログラムの作成に関するセクションがあり、これは新しいと思います。
95 linux  build  install  cmake  glfw 

1
CMakeはどのように使用されますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 この質問を改善する 初心者としてCMakeに関する有用な情報を入手することは非常に難しいことで有名です。これまでのところ、いくつかの非常に基本的なプロジェクトを設定する方法に関するチュートリアルをいくつか見てきました。ただし、これらはどれも、そこに示されているものの背後にある理由を説明しておらず、常に埋めるべき多くの穴が残っています。 CMakeListsでCMakeを呼び出すとはどういう意味ですか?ビルドツリーごとに一度呼び出されることになっていますか?すべてが同じソースの同じCMakeLists.txtファイルを使用する場合、ビルドごとに異なる設定を使用するにはどうすればよいですか?各サブディレクトリに独自のCMakeListsファイルが必要なのはなぜですか?プロジェクトのルートにあるもの以外のCMakeLists.txtでCMakeを使用することは理にかなっていますか?もしそうなら、どのような場合に?独自のサブディレクトリのCMakeListsファイルから実行可能ファイルまたはライブラリを構築する方法を指定することと、すべてのソースのルートにあるCMakeListsファイルでそれを実行することの違いは何ですか?-GCMakeを呼び出すときにオプションを変更するだけで、Eclipse用のプロジェクトとVisual Studio用のプロジェクトを作成できますか?それはどのように使用されていますか? これまでに見たチュートリアル、ドキュメントページ、質問/回答のいずれも、CMakeの使用方法を理解する上で役立つ洞察を提供していません。例は完全ではありません。どんなチュートリアルを読んだとしても、何か重要なことを忘れているように感じます。 私のようなCMake初心者がこれを明示的に尋ねない多くの質問がありますが、それは、newbとして、私たちはCMakeの扱い方やそれをどうするかわからないという事実を明らかにしています。
95 cmake 

7
CMakeで文字列を複数の行に分割する方法は?
私のプロジェクトでは通常、80行を超えるテキストファイルに行を作成しないようにポリシーを設定しています。そのため、あらゆる種類のエディターで簡単に編集できます(契約はご存知です)。しかし、CMakeを使用すると、単純な文字列を複数の行に分割して1つの大きな行を回避する方法がわからないという問題が発生します。この基本的なコードを考えてみましょう: set(MYPROJ_VERSION_MAJOR "1") set(MYPROJ_VERSION_MINOR "0") set(MYPROJ_VERSION_PATCH "0") set(MYPROJ_VERSION_EXTRA "rc1") set(MYPROJ_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_EXTRA}") すでに80行の制限を超えています。では、CMakeの行を冗長(複数list(APPEND ...)など)にせずに複数の行に分割するにはどうすればよいですか?
95 cmake 

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