我有以下stm32库的项目结构:
-lib
-include
-f0
-f1
-f4
CMakeLists.txt
字符串
CMakeLists.txt包含每个MCU系列的add_library
命令和每个库的target_include_directories
。target_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>
?
我想重新整理我的图书馆,但它似乎太丑了。
1条答案
按热度按时间rpppsulh1#
我可以写target_include_directories并为目录中的文件添加假前缀吗?
不可以。目录
<anything>
是1:1Map到目录结构的。如果你想添加一个前缀,你必须 copy 文件到一个目录中。你可以在CMake中复制它们,如果你愿意的话,添加复制的目录到包含路径,但是注意这会让项目工作变得混乱。考虑重构您的项目,并将特定于平台的包含放在单独的目录中。通常情况下:
字符串