c++ - CMake:为目标源设置目录
问题描述
我有一个 C++ 项目,其中所有实现源文件 (*.cpp) 都驻留在项目目录中的src目录中。一些文件位于其他子目录中。假设src/foo/中有 50 个文件。我需要将这些文件列为add_library
和/或target_sources
函数的一部分。
现在,无论在哪里,都不鼓励自动添加目录中的所有文件,这对我来说很好。所以我要手动列出所有文件;但是重复常用前缀src/foo/ 50 次似乎真的很愚蠢而且很烦人。
相对源文件路径被解释为相对于当前源目录(即 CMAKE_CURRENT_SOURCE_DIR)。
所以我set(CMAKE_CURRENT_SOURCE_DIR "src/foo/")
在调用之前添加了,target_source
但它没有用。(我收到“找不到源文件”错误。)
那么,如果可能的话,实现我想要的正确方法是什么?
注意:项目的(公共)头文件 (*.hpp) 位于包含目录中(在src之外)。使用该功能很好地配置了(无需列出单个文件)target_include_directories
。
解决方案
但重复公共前缀 src/foo/ 50 次
只需在源前面加上前缀即可。
set(target_sources
source1.c
source2.c
)
list(TRANSFORM target_sources PREPEND "src/foo/")
推荐阅读
- html - CSS 和页面大小调整
- python - Python 和 Excel 中某些矩阵的逆矩阵是不同的。我应该考虑哪些结果?
- python - 将文本列表分配给变量 python
- sql - SQL电子商务数据库。如何在同一行关联外键?
- dig - 解码挖掘输出:+norecurse @nameserver MX 到域
- windows - Windows 10 上的 Apache 2.4.46 虚拟主机
- c# - Blazor EditForm 以编程方式提交
- spring-boot - 在哪里可以找到 SpringBoot 包的 SHA256/SHA512 哈希?
- javascript - 如何将嵌入查询与 wordpress rest api 一起使用?
- powerbi - 如何在 PowerBI 中使用 DAX 创建动态子表