[英]include file with preprocessor define
我想包含一个文件,并对路径使用预处理器定义。
// in projects preprocessor definitions:
HEADER="../somePath/theHeader.h"
// in a file
#include HEADER
这在Windows上有效,但是XCode对此抱怨,找不到文件。 用该路径替换HEADER
可以工作,因此该文件实际上存在。 那么,我想念什么?
我想念什么?
足够的报价,也许。 在Unix上,您需要:
HEADER = "../somePath/theHeader.h"
${CC} ${CFLAGS} -DHEADER='${HEADER}' -c file.cpp
宏定义包括双引号。 如果您不将-DHEADER
参数括在单引号中,则shell(un)会有效地去除双引号。 通过将其放在单引号中,shell可以帮助删除单引号,而双引号留给编译器查看。
Windows上命令行处理的规则不同,并且使用cmd.exe
处理器对引号的处理方式也不同。
顺便说一句,当我想让人们可以在命令行上指定HEADER
的值时,我使用:
HEADER = ../somePath/theHeader.h
${CC} ${CFLAGS} -DHEADER='"${HEADER}"' -c file.cpp
现在我可以运行:
make HEADER=/other/path/to/header.h file.o
而且有效。 使用原始符号,我必须写:
make HEADER='"/other/path/to/header.h"' file.o
或类似的东西(比较麻烦),如果要使用命令输出指定文件名,则麻烦得多。 将第一个选项与第二个选项进行比较:
make HEADER=$(locate header.h)
make HEADER="\"$(locate header.h)\""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.