cmake 为target_include_directories添加前缀

k5ifujac  于 2024-01-09  发布在  其他
关注(0)|答案(1)|浏览(284)

我有以下stm32库的项目结构:

  1. -lib
  2. -include
  3. -f0
  4. -f1
  5. -f4
  6. CMakeLists.txt

字符串
CMakeLists.txt包含每个MCU系列的add_library命令和每个库的target_include_directoriestarget_include_directories添加了f0/f1/f4文件夹,因此用户可以通过#include <timer.h包含标题。但这并不好,因为标题名称可能与其他项目部门冲突。
我可以链接整个include文件夹,并添加全局timer.h和其他#ifdef F0 #include "f0/timer.h",但在这种情况下,用户可以看到其他家庭文件夹(例如,他使用F0,但看到f1和f4文件夹)。
我的问题:我可以写target_include_directories和添加假前缀的文件从目录?我想包括f0文件夹,但强制用户写#include <lib/timer.h>
我想重新整理我的图书馆,但它似乎太丑了。

rpppsulh

rpppsulh1#

我可以写target_include_directories并为目录中的文件添加假前缀吗?
不可以。目录<anything>是1:1Map到目录结构的。如果你想添加一个前缀,你必须 copy 文件到一个目录中。你可以在CMake中复制它们,如果你愿意的话,添加复制的目录到包含路径,但是注意这会让项目工作变得混乱。
考虑重构您的项目,并将特定于平台的包含放在单独的目录中。通常情况下:

  1. lib/
  2. ├── f0
  3. └── include
  4. └── lib
  5. ├── f1
  6. └── include
  7. └── lib
  8. └── f4
  9. └── include
  10. └── lib

字符串

相关问题