[解決済み] CMAKE_CURRENT_SOURCE_DIRとCMAKE_CURRENT_LIST_DIRの相違点
質問
Wikiから。
cmake_current_source_dir これは、現在処理中の CMakeLists.txt が置かれているディレクトリです。
cmake_current_list_dir (2.8.3 以降) これは現在処理中のリストファイルのディレクトリです。
Docsから。
cmake_current_source_dir: 現在処理中のソースディレクトリへのパスです。 cmakeが現在処理しているソースディレクトリへのフルパスです。
cmake_current_list_dirです。 現在処理されているリストファイルのフルディレクトリ。 CMake がプロジェクトのリストファイルを処理するとき、この変数は常に現在処理されているリストファイル (CMAKE_CURRENT_LIST_FILE) が置かれているディレクトリに設定されます。この値は、動的なスコープを持ちます。CMake がソース ファイル内のコマンドの処理を開始すると、この変数にそのファイルがあるディレクトリーが設定されます。CMake がファイルからのコマンドの処理を終了すると、以前の値が復元されます。したがって、マクロまたは関数内の変数の値は、マクロまたは関数定義を含むファイルのディレクトリではなく、コールスタックの最下位エントリを呼び出すファイルのディレクトリになります。
どのような状況で、これらの変数が異なる値を保持するのでしょうか。
どのように解決するのですか?
変数
CMAKE_CURRENT_SOURCE_DIR
と
CMAKE_CURRENT_LIST_DIR
を持つ別のファイルがインクルードする CMake リストファイルに対して、異なるディレクトリを参照することがあります。
インクルード
コマンドで他のファイルによってインクルードされる CMake リストファイルに対して、異なるディレクトリを参照することができます。例えば、もし
CMakeLists.txt
がディレクトリに存在する場合
project
に存在し、以下のディレクティブを含んでいます。
include(src/CMakeLists.txt)
次に
src/CMakeLists.txt
が処理されている間
CMAKE_CURRENT_LIST_DIR
を参照します。
project/src
一方
CMAKE_CURRENT_SOURCE_DIR
はまだ外側のディレクトリを指しています。
project
.
CMAKE_CURRENT_LIST_DIR
の隣にあるテンプレートファイルやバッチスクリプトのようなリソースファイルを探すのに便利です。
CMakeLists.txt
ファイルの隣にある、テンプレートファイルやバッチスクリプトのようなリソースファイルを探すのに便利です。
注
add_subdirectory()
コマンドではなく
include()
を指定した場合、動作が異なり
src/CMakeLists.txt
が処理されているときは、両方の変数が
project/src
.
関連
-
[解決済み] CMakeでコンパイラを指定するには?
-
[解決済み] CMakeにソースディレクトリにある静的ライブラリをリンクするように指示するにはどうすればよいですか?
-
[解決済み] CMakeの出力をクリアするための'cmake clean'コマンドを探しています。
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
-
[解決済み] configure --prefix=DIR && make all install ' と同等のCMakeは何ですか?
-
[解決済み】CMAKE_MODULE_PATHを指定する必要がある場合、find_package()はどのように使用するのでしょうか?
-
[解決済み] CMakeでソースファイルを指定する場合、GLOBで指定するのと、1ファイルずつ指定するのと、どちらが良いですか?
-
[解決済み] 外部ライブラリへのCMakeリンク
-
[解決済み] CMAKE_CURRENT_SOURCE_DIRとCMAKE_CURRENT_LIST_DIRの相違点
-
[解決済み] CMakeを使用して、CTestから冗長出力を得るにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CMakeでコンパイラを指定するには?
-
[解決済み] CMakeにソースディレクトリにある静的ライブラリをリンクするように指示するにはどうすればよいですか?
-
[解決済み] CMakeの出力をクリアするための'cmake clean'コマンドを探しています。
-
[解決済み] configure --prefix=DIR && make all install ' と同等のCMakeは何ですか?
-
[解決済み] CMakeでソースファイルを指定する場合、GLOBで指定するのと、1ファイルずつ指定するのと、どちらが良いですか?
-
[解決済み] 外部ライブラリへのCMakeリンク
-
[解決済み] CMakeで警告レベルを設定するには?
-
[解決済み] CMAKE_CURRENT_SOURCE_DIRとCMAKE_CURRENT_LIST_DIRの相違点
-
[解決済み] CMakeを使用して、CTestから冗長出力を得るにはどうすればよいですか?
-
[解決済み] CMake target_link_libraries インターフェース依存性