如何选择哪个CMake可执行目标是默认目标?

use*_*791 12 build cmake

我写了一个CMakeLists.txt包含2个可执行文件(target1target2)的文件:

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

ADD_EXECUTABLE(target2 ${CXX_FILES} ${OTHER_CXX_FILES})
TARGET_LINK_LIBRARIES(target2 ${requiredlibs})
Run Code Online (Sandbox Code Playgroud)

现在,每当我在没有任何参数的情况下运行make时,都会重建两个目标.但我想定义target1为默认可执行文件,以便只运行make而不使用任何参数target1.对于建筑target2我会跑make target2.

这可能吗?

在CMake创建的Makefile中,有以下定义:default_target:all

我想我需要一种方法来此设置default_targettarget1.

我遇到的另一个问题是make总是重建目标,即使没有更改源文件.

vla*_*ima 11

执行您请求的示例CMakeLists.txt:

ADD_EXECUTABLE(target1 a.c)

ADD_EXECUTABLE(target2 EXCLUDE_FROM_ALL b.c)
Run Code Online (Sandbox Code Playgroud)

对我来说,如果源文件没有改变(或修改时间没有改变),它不会重建目标.输出我得到:

$ 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
Run Code Online (Sandbox Code Playgroud)

请注意,第二个make不会重建任何内容.

(您可以阅读有关此类信息的CMake手册)