クロスプラットフォームプロジェクトを、Visual C++、XCode、makefileの個別のビルド管理システムからCMakeに切り替えることを検討しています。
必要な機能の1つは、ディレクトリ内のすべてのファイルをターゲットに自動的に追加することです。これはmakeで簡単に行えますが、Visual C++およびXCodeでは簡単に実行できません(間違っている場合は修正してください)。 CMakeで直接行うことは可能ですか?どうやって?
可能です。例えば。 file(GLOB
で:
cmake_minimum_required(VERSION 2.8)
file(GLOB helloworld_SRC
"*.h"
"*.cpp"
)
add_executable(helloworld ${helloworld_SRC})
生成されたビルドシステムはCMakeにいつ問い合わせるかわからないため、ソースファイルが追加または削除された場合、cmake
の再実行がmanualを必要とすることに注意してください。再生成し、すべてのビルドで実行すると、ビルド時間が長くなります。
Kleistによる答えは確かに機能しますが、重要な注意事項があります。
Makefile
を手動で記述する場合、すべての.cpp
および.h
ファイルを選択する関数を使用して、SRCS
変数を生成できます。ソースファイルが後で追加された場合、make
を再実行するとそのファイルが含まれます。
ただし、CMake(file(GLOB ...)
などのコマンドを使用)はファイルリストを明示的に生成し、自動生成されたMakefile
に配置します。新しいソースファイルがある場合は、Makefile
を再実行してcmake
を再生成する必要があります。
編集:Makefileを削除する必要はありません。