cmake 为target_include_directories添加前缀

k5ifujac  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

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

-lib
  -include
    -f0
    -f1
    -f4
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中复制它们,如果你愿意的话,添加复制的目录到包含路径,但是注意这会让项目工作变得混乱。
考虑重构您的项目,并将特定于平台的包含放在单独的目录中。通常情况下:

lib/
├── f0
│   └── include
│       └── lib
├── f1
│   └── include
│       └── lib
└── f4
    └── include
        └── lib

字符串

相关问题