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

时间:2012-04-20 14:40:00

标签: 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})

现在,每当我在没有任何参数的情况下运行make时,都会重建两个目标。但我想将target1定义为默认可执行文件,以便在没有任何参数的情况下运行make只构建target1。要构建target2,我会运行make target2

这可能吗?

在CMake创建的Makefile中有以下定义: default_target:全部

我想我需要一种方法将此default_target设置为target1

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

1 个答案:

答案 0 :(得分:11)

执行您请求的示例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

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

(您可以阅读此类信息的CMake manual