我有一個主代碼(.cpp)和一些其他文件(.cpp及其對應的.h文件),其中包含我的主程序中使用的函數。我想知道如何編譯我的文件並運行主代碼。如何編譯包含多個源文件的項目?
2
A
回答
5
這取決於你的編譯器。例如,使用GCC,你可能會寫:
g++ foo.cpp bar.cpp baz.cpp -o foo # compile program
./foo # run program
1
3
Basile's right on, you need build machinery有軟件,你可以很容易地努力。你真的希望能夠運行make
或類似的東西,並以可重複的方式快速重建項目。您還希望確保您的整個項目保持最新狀態,重建所有依賴於已發生變化的事情。雖然你可以只保留一個包含g++
行的shell腳本,如ruakh's answer,但這將會不必要地重新編譯超過你的需要。 (這對小項目來說並不是什麼大事,但當項目變得比平凡更重要時就變得很重要。)
我只花了15分鐘瀏覽了OMake文檔,但它看起來很有希望。 make
在系統上是標準的,並且提供了大量預定義的構建規則,包括C++規則,所以編寫項目新的Makefile
並不是很困難。
它會是這個樣子:
# the compiler and its flags
CXX = g++
CXXFLAGS = -Wall
PROGRAM = foo
OBJECTS = foo_a.o foo_b.o foo_c.o foo_d.o
.PHONY: all
.DEFAULT: all
all: $(PROGRAM)
$(PROGRAM): $(OBJECTS)
的對象foo_a.o
將從名爲foo_a.c
,foo_a.cc
,foo_a.C
,foo_a.cpp
,foo_a.p
,foo_a.f
,foo_a.F
相應的源文件,等建成,對於C ,C++,Fortran,Pascal,Lex,Yacc等。
O'Reilly make
book此時此刻已經過時了, .SUFFIX
規則已被pattern rules代替,但O'Reilly書中沒有涵蓋模式規則。也就是說,如果整個GNU Make documentation不適合你,它仍然是一個很好的起點。
相關問題
- 1. cmake:如何在項目目錄中包含/編譯文件?
- 2. 如何編譯包含C源文件的C++源代碼?
- 3. 如何在包中編譯並運行包含多個類的項目?
- 4. 編譯多個源文件
- 5. 如何使用Makefiles編譯包含多個目錄的C++項目?
- 6. 無法執行Findbugs導致:該項目包含未編譯的Java源文件
- 7. 將Zxing庫編譯爲.a文件幷包含在項目中
- 8. 編譯一個包含多個文件的程序
- 9. 如何在使用Apache Ant編譯的項目中包含ActionBar
- 10. 如何在anjuta項目中包含資源文件
- 11. 如何在一個主項目中包含多個Xcode項目
- 12. 已編譯的Jar文件包含多餘的類文件
- 13. Ant:如何編譯包含源附件的jar
- 14. 編譯XCode中的多個目標時,如何確保某些文件不會包含在一個目標中
- 15. 包括包含.jar文件編譯
- 16. 可以編譯多個源文件夾到多個目標文件夾
- 17. 如何編譯和運行多個包或源文件的Java代碼
- 18. 編譯開源項目
- 19. 如何讀取項目文件.csproj以僅編譯項目中包含的那些.cs
- 20. 編譯單個文件在NetBeans項目
- 21. 如何編譯一個由多個文件組成的java項目?
- 22. 如何在多項目.vstemplate中包含外部文件?
- 23. 使用Reflex Platform編譯包含本地包的堆棧項目
- 24. 如何在頭文件中包含依賴項而不將其包含在包含頭文件的項目中
- 25. 如何上傳一個包含文件夾的項目到GitHub
- 26. 在Linux上丟失的包含文件的編譯器選項
- 27. 相剋編譯多個源目錄++
- 28. 如何在SCons中編譯包含子目錄的包?
- 29. 如何在命令行中編譯多個java源文件
- 30. Code :: Blocks - 如何編譯多個源文件
我提到-Wall&-g這是非常有用的。 – 2011-12-15 01:10:22
非常感謝,這正是我想要的。 – Sohrab 2011-12-15 03:27:44