【发布时间】:2013-07-30 09:48:16
【问题描述】:
我有一个库的 CMakeLists.txt 文件。这是非常基本的:
set(LIB_FILES source/first.cpp)
add_library(first ${LIB_FILES})
我将文件放在一个列表中,因为我最终会向库中添加更多源文件。问题是所有文件都在source 目录中。而且我不想经常重复。
我也不想使用GLOB 模式匹配解决方案,因为我想在添加新文件时必须编辑 CMakeLists.txt 文件。这样,我的构建将重新构建构建解决方案,并且新文件将正确显示(据我了解。我还是 CMake 的新手)。
我尝试将 CMakeLists.txt 文件添加到 source 目录本身,只是为了构建 LIB_FILES 列表。那效果不是很好。 CMake 中的变量是文件范围的。即使我打破了范围界定(使用PARENT_SCOPE),我仍然必须在每个文件前面加上目录。所以什么也没得到。
我不想将实际的库定义放在source 目录中,因为这会在source 目录中生成所有构建文件。我不希望那样。此外,我还需要包含不在 source 目录中或之下的标头。
我的目录结构如下:
libroot (where the project build files should go)
\-source (where the source code is)
\-include (where the headers that the user of the library includes go)
那么我如何告诉 CMake 所有源文件都来自 source 目录,这样我就不必不断地拼写出来?
【问题讨论】:
标签: cmake