2012-07-17 144 views
2

我在/ my/path/to/file文件夾中有幾個頭文件。我知道如何將這些文件包含在新的C程序中,但每次我需要在包含頭文件之前輸入完整的頭文件路徑。我可以在linux中設置一些路徑變量來自動查找頭文件嗎?更新包括Linux中的路徑

+0

您可以將路徑添加到你的makefile?如果你使用一個是 – mathematician1975 2012-07-17 09:57:06

+0

你使用gcc嗎?你直接使用它還是使用makefile? – rekire 2012-07-17 09:57:46

+0

我直接使用它 – 2012-07-17 09:59:04

回答

4

您可以創建一個makefile。一個簡單的例子是:

INC_PATH=/my/path/to/file 
CFLAGS=-I$(INC_PATH) 

all: 
    gcc $(CFLAGS) -o prog src1.c src2.c 

從這裏你可以在很多方面改善這個makefile。最重要的可能是狀態編譯依賴關係(因此只有被修改的文件被重新編譯)。

作爲參考,您可以在此鏈接到GNU make documentation

如果你不想使用的makefile,你可以隨時設置環境變量,使之更容易輸入編譯命令:

export MY_INC_PATH=/my/path/to/file 

然後,你可以編譯程序,如:

gcc -I${MY_INC_PATH} -o prog src1.c src2.c ... 

您可能想要在文件.bashrc中定義MY_INC_PATH變量,或者可能更好,在包含變量定義的方便位置創建文件。然後,你可以使用source來設置該變量在當前shell:

source env.sh 

我想,但是,使用生成文件是一個非常理想的方法。

+0

謝謝,但有沒有寫任何makefile文件? – 2012-07-17 10:08:23

+0

@ username_4567我只是更新我的問題,以包括一個替代解決方案。但是寫一個5行的makefile對我來說似乎是一個簡單和更好的解決方案。 – betabandido 2012-07-17 10:13:39

+0

感謝其實我以爲有所有頭文件被查找的默認路徑.. – 2012-07-17 10:15:52

-1

我現在不在Linux中,我不能爲了檢查一切是否正確而煩惱重啓,但是您是否嘗試過製作符號鏈接?例如,如果你是在Ubuntu:

$ cd /usr/include 
$ sudo ln -s /my/path/to/file mystuff 

所以那麼當你要包括塞入,你可以使用:

#include <mystuff/SpamFlavours.h> 
3

存在類似的問題,並有可能較好地解決了(如果你有興趣在永久的解決方案):https://stackoverflow.com/a/558819/1408096

嘗試設置C_INCLUDE_PATH(對於C頭文件)或CPLUS_INCLUDE_PATH(用於C++頭文件)。

榮譽:jcrossley3