CMake – 自动添加文件夹中的所有文件到目标?

我正在考虑将Visual C ++,XCode和makefiles中的独立构buildpipe理系统的跨平台项目切换到CMake。

我需要的一个基本function是自动将目录中的所有文件添加到目标。 虽然这与make很容易做到,但使用Visual C ++和XCode并不容易(如果我错了,请纠正错误)。 是否可以直接在CMake中完成? 怎么样?

考虑到目前该项目是中型(8个库,2个可执行文件,8个testing项目,并且取决于大约8个外部库),在学习CMake之前,请随时添加其他任何我应该注意的事情。

有可能的。 例如用file(GLOB

 cmake_minimum_required(VERSION 2.8) file(GLOB helloworld_SRC "*.h" "*.cpp" ) add_executable(helloworld ${helloworld_SRC}) 

请注意,如果添加或删除源文件,则需要手动重新运行cmake ,因为生成的构build系统不知道何时要求CMake重新生成,并且在每次构build时都会增加构build时间。

克莱斯特的答案当然有效,但有一个重要的警告:

当您手动编写Makefile ,可以使用函数生成一个SRCSvariables来select所有的.cpp.h文件。 如果稍后添加源文件,则重新运行make将包括它。

但是,CMake(使用类似file(GLOB ...)的命令)将显式生成一个文件列表,并将其放置在自动生成的Makefile 。 如果你有一个新的源文件,你将需要通过重新运行cmake重新生成Makefile

编辑:不需要删除的Makefile。