[解決済み] CMakeを使用して、フォルダ内のすべてのファイルをターゲットに自動的に追加しますか?
質問
私は、クロスプラットフォームのプロジェクトを、Visual C++、XCode、makefilesの別々のビルド管理システムからCMakeに切り替えることを検討しています。
私が必要とする本質的な機能の1つは、ディレクトリ内のすべてのファイルを自動的にターゲットに追加することです。これは、makeでは簡単にできますが、Visual C++とXCodeでは簡単にはできません(間違っていたら訂正してください)。CMakeで直接それを行うことは可能ですか?どのように?
どのように解決するのですか?
CMake 3.1+ では、開発者が
強くお勧めします
を使用することはできません。
file(GLOB
または
file(GLOB_RECURSE
を使用して、ソースファイルのリストを収集します。
注意 ソースツリーからソースファイルのリストを収集するためにGLOBを使用することはお勧めしません。ソースが追加または削除されたときに CMakeLists.txt ファイルが変更されないと、生成されたビルドシステムは CMake にいつ再生成を依頼すればよいのかわからなくなります。CONFIGURE_DEPENDS フラグは、すべてのジェネレータで確実に動作するとは限りませんし、将来、これをサポートしない新しいジェネレータが追加された場合、これを使用するプロジェクトは行き詰まるでしょう。CONFIGURE_DEPENDS が確実に動作するとしても、再構築のたびにチェックを行うにはコストがかかります。
をご覧ください。 のドキュメントはこちら .
2つのグッズの回答があります( [1] , [2] にて、ソースファイルを手動でリストアップする理由を詳しく説明しています。
可能です。例えば
file(GLOB
:
cmake_minimum_required(VERSION 2.8)
file(GLOB helloworld_SRC
"*.h"
"*.cpp"
)
add_executable(helloworld ${helloworld_SRC})
ただし、これには
マニュアル
を再実行する。
cmake
というのも、生成されたビルドシステムは、いつ CMake に再生を依頼すればよいのかわからず、ビルドのたびに依頼するとビルド時間が長くなってしまうからです。
CMake 3.12 以降では、この機能を利用して
CONFIGURE_DEPENDS
フラグを
file(GLOB
を使用すると、ビルドが起動されるたびに自動的にファイルリストをチェックし、リセットすることができます。と書くことになります。
cmake_minimum_required(VERSION 3.12)
file(GLOB helloworld_SRC CONFIGURE_DEPENDS "*.h" "*.cpp")
これで少なくとも、ファイルが追加されるたびに CMake を手動で再実行する必要はなくなります。
関連
-
[解決済み] Visual StudioでC++プロジェクトをコンパイルすると、"LNK1104: cannot open file 'C:\Program.obj'" という致命的なエラーが発生するのですが、なぜですか?
-
[解決済み] CreateProcessとCreateProcessAの違いは何ですか?
-
[解決済み] エラー: 期待される宣言
-
[解決済み] VC++ Express Edition で afxwin.h ファイルが見つかりません。
-
[解決済み] エラー lnk2026: モジュールが safeseh イメージに対して安全でない
-
[解決済み] Visual C++でコンソールウィンドウを開いたままにするには?
-
[解決済み] Visual C++ Build ツールのインストール方法を教えてください。
-
[解決済み] configure --prefix=DIR && make all install ' と同等のCMakeは何ですか?
-
[解決済み] CMakeを使用して、フォルダ内のすべてのファイルをターゲットに自動的に追加しますか?
-
[解決済み] すべてのVisual Studio $変数へのリンク
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Visual StudioでC++プロジェクトをコンパイルすると、"LNK1104: cannot open file 'C:\Program.obj'" という致命的なエラーが発生するのですが、なぜですか?
-
[解決済み] CreateProcessとCreateProcessAの違いは何ですか?
-
[解決済み] エラー: 期待される宣言
-
[解決済み] VC++ Express Edition で afxwin.h ファイルが見つかりません。
-
[解決済み] エラー lnk2026: モジュールが safeseh イメージに対して安全でない
-
[解決済み] Visual C++でコンソールウィンドウを開いたままにするには?
-
[解決済み] Visual C++ Build ツールのインストール方法を教えてください。
-
[解決済み] CMakeを使用して、フォルダ内のすべてのファイルをターゲットに自動的に追加しますか?
-
[解決済み] すべてのVisual Studio $変数へのリンク
-
[解決済み] CMakeでソースファイルを指定する場合、GLOBで指定するのと、1ファイルずつ指定するのと、どちらが良いですか?