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

Build 如何选择哪个CMake可执行目标为默认目标?,build,cmake,Build,Cmake,我已经编写了一个CMakeLists.txt文件,包括2个可执行文件(target1和target2): 现在,每当我在没有任何参数的情况下运行make时,两个目标都会重建。但是我想将target1定义为默认可执行文件,这样运行make而不带任何参数只会生成target1。对于构建target2,我将运行maketarget2 这可能吗 在CMake创建的Makefile中有以下定义: 默认_目标:全部 我想我需要一种方法将此default\u target设置为target1 我遇到的另一个问

我已经编写了一个
CMakeLists.txt
文件,包括2个可执行文件(
target1
target2
):

现在,每当我在没有任何参数的情况下运行make时,两个目标都会重建。但是我想将
target1
定义为默认可执行文件,这样运行make而不带任何参数只会生成
target1
。对于构建
target2
,我将运行
maketarget2

这可能吗

在CMake创建的Makefile中有以下定义: 默认_目标:全部

我想我需要一种方法将此
default\u target
设置为
target1


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

一个示例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不会重建任何内容


(您可以阅读此类型的信息)

感谢您的快速回答和示例。把你排除在外你解决了我的问题。
$ 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