14

CMakeLists.txt2 つの実行可能ファイル (target1およびtarget2)を含むファイルを作成しました。

ADD_EXECUTABLE(target1 ${CXX_FILES})
TARGET_LINK_LIBRARIES(target1 ${requiredlibs})

ADD_EXECUTABLE(target2 ${CXX_FILES} ${OTHER_CXX_FILES})
TARGET_LINK_LIBRARIES(target2 ${requiredlibs})

パラメータなしで make を実行するたびに、両方のターゲットが再構築されます。target1しかし、パラメーターなしで make を実行するとビルドのみが実行されるように、デフォルトの実行可能ファイルとして定義したいと考えていますtarget1。建物のためtarget2に私は走りmake target2ます。

これは可能ですか?

CMake によって作成された Makefile には、次の定義があります。

default_targetこれをに設定する方法が必要だと思いますtarget1

私が抱えているもう 1 つの問題は、ソース ファイルが変更されていない場合でも、make が常にターゲットを再構築することです。

4

1 に答える 1

13

要求したことを行う CMakeLists.txt の例:

ADD_EXECUTABLE(target1 a.c)

ADD_EXECUTABLE(target2 EXCLUDE_FROM_ALL b.c)

ソースファイルが変更されていない場合(または変更時間が変更されていない場合)、ターゲットを再構築しません。私が得る出力:

$ make -f Makefile 
Scanning dependencies of target target1
[100%] Building C object CMakeFiles/target1.dir/a.c.o
Linking C executable target1
[100%] Built target target1
[$ make -f Makefile 
[100%] Built target target1

2 番目の make では何も再構築されないことに注意してください。

(この種の情報については、 CMake のマニュアルを参照してください)

于 2012-04-20T14:52:43.387 に答える