mar*_*jno 150 c++ cross-platform cmake
我正在考虑将跨平台项目从Visual C++,XCode和makefile中的单独构建管理系统切换到CMake.
我需要的一个基本功能是自动将目录中的所有文件添加到目标.虽然这很容易用make做,但使用Visual C++和XCode并不容易做到(如果我错了,请纠正我).是否可以直接在CMake中进行?怎么样?
在学习CMake之前,请随意添加我应该注意的任何其他事情,考虑到目前该项目是中等规模的(8个库,2个可执行文件,8个测试项目,它取决于大约8个外部库).
Kle*_*ist 210
有可能的.例如file(GLOB:
cmake_minimum_required(VERSION 2.8)
file(GLOB helloworld_SRC
"*.h"
"*.cpp"
)
add_executable(helloworld ${helloworld_SRC})
Run Code Online (Sandbox Code Playgroud)
请注意,如果添加或删除源文件,则需要手动重新运行cmake,因为生成的构建系统不知道何时要求CMake重新生成,并且在每次构建时执行此操作都会增加构建时间.
kar*_*niz 31
克莱斯特的答案肯定有效,但有一个重要的警告:
当你写一个Makefile手动,你可能会产生一个SRCS使用功能选择所有变量.cpp和.h文件.如果稍后添加了源文件,则重新运行make将包含它.
但是,CMake(使用类似命令file(GLOB ...))将显式生成文件列表并将其放入自动生成的文件列表中Makefile.如果您有新的源文件,则需要Makefile通过重新运行来重新生成cmake.
编辑:无需删除Makefile.
扩展为@Kleist答案:
由于CMake的3.12附加选项CONFIGURE_DEPENDS是支持通过命令file(GLOB)和file(GLOB_RECURSE)。使用此选项有没有需要以手动添加/删除目录中的源文件后重新运行cmake - CMake的将是重新运行在未来建设项目自动。
但是,选项CONFIGURE_DEPENDS意味着每次请求构建时都会重新检查相应的目录,因此构建过程将比没有CONFIGURE_DEPENDS花费更多的时间。
即使有CONFIGURE_DEPENDS选项可用,CMake 文档仍然不建议使用file(GLOB)或file(GLOB_RECURSE)收集源。
| 归档时间: |
|
| 查看次数: |
127118 次 |
| 最近记录: |