2010-11-09 51 views
71

C++新手;對包含,庫和編譯過程的基本理解。還有一些簡單的makefiles。如何在Makefile中定義幾個包含路徑

我目前的項目涉及到使用informix數據庫api,我需要在多個非標準dirs中包含頭文件。如何寫這個?沒有發現任何網絡上,可能是因爲我沒有使用好搜索條件

這是我嘗試(不工作)的一種方式。只是爲了顯示makefile文件

LIB=-L/usr/informix/lib/c++ 
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public 

default: main 

main: test.cpp 
     gcc -Wall $(LIB) $(INC) -c test.cpp 
     #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp 

clean: 
     rm -r test.o make.out 

回答

80

你必須在前面加上每個目錄與-I

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 
+0

它仍然沒有工作對我來說,雖然運行GCC手工做的。 – NoBugs 2016-05-26 20:47:11

2
INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 

謝謝你能聽...發佈之後,我發現缺少的方法可行我還沒有嘗試過

63

您需要在每個目錄下使用-I。但是,你仍然可以劃定目錄有空格,如果你使用(GNU)製作的foreach

INC=$(DIR1) $(DIR2) ... 
INC_PARAMS=$(foreach d, $(INC), -I$d) 
+6

+這是我來這裏尋找的。 '$(foreach ,,'' – 2012-10-19 19:50:08

+11

或更短:'INC_PARAMS = $(INC:%= - I%)'with [substitutions](https://www.gnu.org/software/make/manual/html_node/Substitution -Refs.html)。 '$(foreach ,,)'更具可讀性,但是替換是如此常用,以至於熟悉它們的工作方式是很好的。 – skalee 2014-05-08 09:19:12

相關問題