2012-04-25 22 views
-2

假設我們有一個文件列表:多目錄 「製造」 在linux編程

  • SRC
    • 一個
    • b
    • Ç
  • 的Makefile

a nd在每個文件夾中有許多.cc & .h文件。 如何編寫Makefile?

當我寫這樣 ./a/a.cc路徑或../a/a.cc

錯誤

會發生。

但是當我把這些文件放在同一目錄 並寫爲a.cc. 一切都很好。

我在cygwin上運行它。 任何人都可以幫助我嗎?

+0

發佈makefile的例子會有幫助。 – Pubby 2012-04-25 07:29:18

+0

應與./a/a.cc一起使用,但您必須確保依賴關係正確。一個Makefile永遠不會改變工作目錄 – stefan 2012-04-25 07:31:13

+0

潛在的複製到這裏:http://stackoverflow.com/q/9313760/1025391 – moooeeeep 2012-04-25 07:38:50

回答

1

wildcard功能是你在找什麼:http://www.gnu.org/software/make/manual/html_node/Wildcards.html

在Linux上,我寧願的Automake/Autoconf的編譯系統:http://de.wikipedia.org/wiki/GNU_Build_System

另一種可能是CMake的:http://www.cmake.org/

+0

+1爲CMake,我用它與C++和它的作品像一個微風 – 2012-04-25 12:52:11

+0

感謝你的熱情,這真是一個好方法〜 – MonteCarlo 2012-04-26 01:36:18

+0

別忘了接受一個答案幫助你:D – 2012-04-26 05:25:25

1

從不可─如此清晰的目錄圖形,似乎您在Makefile中缺少src/目錄前綴。例如。編譯src/a/a.cc,使用方法:

src/a/a.o: src/a/a.cc 
    $(CXX) $(CXXFLAGS) -c -o [email protected] $< 

:請你幫個忙,並使用一個真正的構建系統,如CMake。它是跨平臺的,可以生成IDE項目文件(例如,用於Visual Studio,Xcode,Eclipse,CodeBlocks等),具有更高的級別併爲您自動執行依賴關係跟蹤。

+0

感謝您的熱忱,這真是一個好方法〜 – MonteCarlo 2012-04-26 01:36:26

1

您已經遺漏了很多詳細信息(例如,要放置目標文件的位置),但VPATH可能是您要查找的內容。

VPATH = src/a src/b src/c 

# Now you can write rules as if the .cc & .h files were in the current directory. 

%.o: %.cc 
    do something with $< 

foo.o: foo.cc bar.h 
    do something special with $< 
+0

感謝您的熱情,這真是一個好方法〜 – MonteCarlo 2012-04-26 01:36:11