[解決済み] cmakeのincludeコマンドにおいて、ファイルとモジュールの違いは何ですか?
質問
私はいくつかのライブラリを使用していますが、それらを使用するすべてのプロジェクトの一部としてビルドされたくありません。非常にわかりやすい例がLLVMで、78個の静的ライブラリがあります。すべてのcmakeファイルでこれらを見つけてインポートするcmakeコードを持つことさえ、過剰なことです。
明らかな解決策は、"include" コマンドを使用し、cmake スクリプトの関連するチャンクを *.cmake ファイルに分解し、CMAKE_MODULE_PATH 環境変数を設定することだと思われます。
ただ、これがうまくいかないんです。インクルードコマンドで指定したファイルが見つからないのです。
念のため、環境変数にバックスラッシュやフォワードスラッシュでパスを指定する方法も試してみました。- その都度コマンドプロンプトを再起動し、環境変数が正しく存在していることを確認しました。
cmakeのマニュアルでは、quot;file"とquot;module"は異なるもので、モジュールだけが自動的に拡張子の追加とパスの検索が行われることを暗示しているようなものです。しかし、その違いが何であるかの説明はありません。私は、拡張子がないだけで(標準的なモジュールと同じように)十分なのではないかと推測しましたが、明らかにそうではありません。
マニュアルで "module" を検索しても、この単語はオーバーロードされているようで、あまり役に立ちません。例えば、モジュールはLoadLibrary/dl_openでロードされたダイナミックライブラリでもあります。
この文脈でファイルとモジュールの違いは何か、またcmakeのincludeコマンドでモジュールを見つけて使用できるように独自のモジュールを作成するにはどうしたらよいか、どなたか説明していただけませんか?
Windowsでcmake 2.8.1を使っています。
EDIT
この問題は、cmakeがどのように動作することになっているのかを理解していないことにあると確信しています。私が思うに
すべき
を書くことです。
find_package
が動作するようになります。
しかし、現状では、自分の質問に答えることはまだできない。
解決方法は?
CMakeの'モジュール'は、単純にファイルとして
find_package
ディレクティブを使用します。 つまり
find_package(Module)
という名前のファイルをMODULE_PATHから探します。
FindModule.cmake
.
とはいえ、もし
include
という拡張子のないファイルがあった場合、これも MODULE_PATH を通して
file.cmake
. 私が取り組んでいるCMakeプロジェクトでは、あなたが提案するものと非常によく似たディレクトリ構造を持っています。
+ root/
+ CMakeLists.txt
+ cmake/
| + FindMatlab.cmake
| + TestInline.cmake
| + stdint.cmake
+ src/
+ include/
CMakeLists.txtに、私はあります。
set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package (Matlab) # runs FindMatlab.cmake
include(TestInline) # defines a macro:
test_inline (CONFIG_C_INLINE)
include(stdint) # simply executes flat CMake code
おそらく、あなたの問題は、環境からモジュールのパスを定義しようとしていることです。 代わりに、単純に以下のように追加してください。 内の にアクセスしようとする CMakeList そのものです。
関連
-
[解決済み] CMakeは "make uninstall "をサポートしていますか?
-
[解決済み] CMake の add_definitions が動作しないようです。
-
[解決済み] CMakeでポータブルパラレルビルドを設定するには?
-
[解決済み] CMakeの出力をクリアするための'cmake clean'コマンドを探しています。
-
[解決済み] MakefileとCMakeを使ったコンパイルの違いについて
-
[解決済み】CMakeをGNU Makeと一緒に使う:正確なコマンドを見るにはどうすればいい?
-
[解決済み】CMakeでGCCとClang/LLVMの切り替えを行う。
-
[解決済み】CMake:スクリプト内のアクセス可能なすべての変数を出力する
-
[解決済み】変数を設定・使用するCMakeの構文とは?
-
[解決済み】CMakeのinclude_directoriesとtarget_include_directoriesの違いは何ですか?
最新
-
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は "make uninstall "をサポートしていますか?
-
[解決済み] プロジェクトでCMAKE_CXX_FLAGSを変更する
-
[解決済み] CMake の add_definitions が動作しないようです。
-
[解決済み] CMakeでポータブルパラレルビルドを設定するには?
-
[解決済み] cmakeのincludeコマンドにおいて、ファイルとモジュールの違いは何ですか?
-
[解決済み] .cmakeファイルの目的は何ですか?
-
[解決済み】CMakeをGNU Makeと一緒に使う:正確なコマンドを見るにはどうすればいい?
-
[解決済み】CMakeでGCCとClang/LLVMの切り替えを行う。
-
[解決済み】CMake:スクリプト内のアクセス可能なすべての変数を出力する
-
[解決済み】CMakeは具体的にどのように動作するのですか?