【发布时间】:2014-09-22 13:56:54
【问题描述】:
我目前遇到这样的问题,实际上是由包维护者引起的,他们根本不认为某个预处理器定义不可用,直到依赖项中所需的某个工具包包的版本 X (目前处于测试阶段)。只需在基本系统的头文件中添加一个额外的#define 即可解决此问题,从而使项目再次正常编译。
但是,如果我没有系统的 root 访问权限怎么办?我还可以在编译时添加#define new_macro "i am from the future",例如。 G。到configure?
在阅读这件事时,我认为它可能与 DEFS 环境变量一起工作,但显然这并不意味着用于 C 预处理器指令。
那么这到底能不能做到呢?
【问题讨论】:
-
gcc -DSOME_MACRO="some_value"? -
是的,这基本上可以工作,但这需要我直接编辑
gcc参数,我实际上想避免这种情况。这和直接编辑依赖包的头文件一样尴尬。 -
您应该能够执行类似
./configure CC='gcc -Dnew_macro="i am from the future"'(语法?)的操作,将文件中的实际gcc命令替换为one+parameter? -
谢谢,但不幸的是,引号中的字符串是个大问题。即使用反斜杠转义它们也不起作用。直到我真正将
#define破解到/usr树中的文件中,项目才会最终编译。否则,它总是会将常量first-second拆分为first和second,从而中断每个函数调用。
标签: configure c-preprocessor preprocessor-directive gnu-toolchain