[英]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.