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
,可以使用函数生成一个SRCS
variables来select所有的.cpp
和.h
文件。 如果稍后添加源文件,则重新运行make
将包括它。
但是,CMake(使用类似file(GLOB ...)
的命令)将显式生成一个文件列表,并将其放置在自动生成的Makefile
。 如果你有一个新的源文件,你将需要通过重新运行cmake
重新生成Makefile
。
编辑:不需要删除的Makefile。