相关疑难解决方法(0)

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

我正在考虑将跨平台项目从Visual C++,XCode和makefile中的单独构建管理系统切换到CMake.

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

在学习CMake之前,请随意添加我应该注意的任何其他事情,考虑到目前该项目是中等规模的(8个库,2个可执行文件,8个测试项目,它取决于大约8个外部库).

c++ cross-platform cmake

150
推荐指数
3
解决办法
13万
查看次数

在CMake中使用GLOB或每个文件单独指定源文件是否更好?

CMake提供了几种指定目标源文件的方法.一种是使用globbing(文档),例如:

FILE(GLOB MY_SRCS dir/*)
Run Code Online (Sandbox Code Playgroud)

另一个是单独指定每个文件.

哪种方式更喜欢?Globbing似乎很容易,但我听说它有一些缺点.

cmake

145
推荐指数
4
解决办法
7万
查看次数

为什么cmake文件GLOB邪恶?

CMake文档说明命令文件GLOB:

我们不建议使用GLOB从源树中收集源文件列表.如果在添加或删除源时没有更改CMakeLists.txt文件,则生成的构建系统无法知道何时请求CMake重新生成.

网络中的几个讨论线程第二个是通配源文件是邪恶的.

但是,为了使构建系统知道已添加或删除了一个源,这就足够了

touch CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

对?

然后,这比编辑CMakeLists.txt插入或删除源文件名更省力.也难以记住.所以我认为没有任何充分理由提出反对意见file GLOB.

这个论点有什么问题?

glob cmake

26
推荐指数
3
解决办法
1万
查看次数

标签 统计

cmake ×3

c++ ×1

cross-platform ×1

glob ×1