我有一个 C++ 项目,其中所有实现源文件 (*.cpp) 都驻留在src项目目录中的目录。某些文件位于其他子目录中。假设有 50 个文件src/foo/。我需要将这些文件列为add_library
和/或target_sources
功能。
现在,无论在哪里,都不鼓励自动添加目录中的所有文件,这对我来说很好。所以我将手动列出所有文件;但重复公共前缀src/foo/50次看起来真的很傻而且很烦人。
In target_sources 的文档 it says
相对源文件路径被解释为相对于当前源目录(即 CMAKE_CURRENT_SOURCE_DIR)。
所以我添加了set(CMAKE_CURRENT_SOURCE_DIR "src/foo/")
在致电之前target_source
但没有成功。 (我收到“找不到源文件”错误。)
那么,如果可能的话,实现我想要的目标的正确方法是什么?
注意:项目的(公共)头文件 (*.hpp) 位于include目录(外部src)。这是很好的配置(无需列出各个文件)target_include_directories
功能。
但重复公共前缀 src/foo/ 50 次
只需在源前面加上前缀即可。
set(target_sources
source1.c
source2.c
)
list(TRANSFORM target_sources PREPEND "src/foo/")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)