2014-02-21 55 views
1

假設我有一些.c文件名aa.cbb.c與他們的頭文件分別名爲lib和主文件main.c在根目錄文件夾中。這裏的結構:如何設置多個C文件的目錄在GCC

root 
-- main.c 
-- lib 
    -- aa.c 
    -- bb.c 
    -- aa.h 
    -- bb.h 

現在,我怎麼可以編譯出現在lib文件夾中的所有C文件沒有給出相對路徑全職。也就是,而不是這樣做:

cc main.c lib/aa.c lib/bb.c 

我該如何設置目錄只有一次,並編譯它的所有文件?我知道,我可以通過創建目標文件或靜態庫來實現,但是可以直接編譯C文件。

我嘗試使用-I-L選項爲.c擴展名,但它不起作用(它只適用於庫文件或目標文件)。

+1

爲您的項目創建Makefile可能是最簡單的方法。 –

+0

是的makefile是最簡單的方法,但我想知道是否有這個選項。 –

+1

我相信沒有這樣的選擇。如果你真的想要它,你可以創建一個你的編譯器的shell腳本包裝器來完成它。 –

回答

1

如果您需要在lib所有的源文件,並且您使用與文件名擴展外殼,你可以嘗試像

cc -I./lib main.c lib/*.c 
+0

如果我只想限制lib的C文件集,該怎麼辦?是否有像庫文件'-L',目標文件'-I'的本機選項。 –

+0

@ ashish2expert所以你只需要列出文件名而不是相對路徑?如果這是你想要的,那麼我相信編譯器的包裝腳本是最好的解決方案。不過,我更喜歡Makefile解決方案。 –

1

你需要告訴編譯器到哪裏尋找頭:

cc -I./lib main.c lib/aa.c lib/bb.c 
+0

不,不是多次包含'lib'目錄,我可以通過只包含一次來做到這一點。 –

+0

@ ashish2expert'cc -I./lib main.c lib/*。c'工作嗎? –

+0

@ ashish2expert試試'make VPATH = lib main.o aa.o bb.o' –

相關問題