【发布时间】:2016-12-26 14:30:30
【问题描述】:
有没有办法连接 2 个字符串文字以形成包含路径?
代码存根:
#define INCLUDE_DIR "/include"
#include INCLUDE_DIR "/dummy.h"
查看this question,答案指向不同的方向(编译器命令行)。提到here貌似不可能,不过不知道是不是已经挖够了话题。
(我确实有一个与此相关的用例,请仅将您的答案/cmets 集中在这个问题上。)
【问题讨论】:
-
您是在寻找特定编译器的解决方案还是需要交叉编译器解决方案? (IMO 最好将其添加到问题中)
-
现代 C++ 中没有这种能力。
-
@mvidelgauz 我使用 gcc/llvm。不过我不会添加标签,我想说的是,编译器特定的解决方案在这里通常是相关的。
-
编译器命令行绝对是这里的必经之路。此配置属于 Makefile(或类似文件),而不是代码文件。
-
@KonradRudolph 我的用例如下。我有一个大项目,它使用 cmake 来生成 makefiles/ninja.rules。在这个大项目中,为了简洁起见,所有包含路径都是共享的。但是,根据相同的 cmake 选项,可能会排除或不排除包含路径仅与少数文件相关。如果我更改其中一个 cmake 选项,则所有文件的包含路径都会更改,因此需要重新编译所有文件。我解决这个问题的方法是,cmake 生成一个包含头文件的完整路径 的配置文件,并且仅在需要该头文件的地方包含这个生成的文件。
标签: c++ c include c-preprocessor