[英]Compiling multiple source directories with g++
我的c ++項目具有以下結構
src
|
|source1.cpp
|source2.cpp
|
|<srcfolder1>
|__ source11.cpp
|__ source12.cpp
|
|<srcfolder2>
|__ source21.cpp
|__ source22.cpp
可以看出,有多個文件夾包含多個源文件。 我給g ++什么命令將所有源文件編譯成單個.o文件?
如果你有很多源文件,你應該考慮編寫一個Makefile: http : //mrbook.org/tutorials/make/
例如,您可以使用與此類似的語法來編譯多個文件(在Makefile中):
%.o : $(SRC_FOLDER)/%.cpp
$(CXX) -c -o $@ $<
您還可以使用可為您生成實際makefile的構建系統。 當您嘗試擴展項目並保持良好的 makefile可能會成為一項艱巨的任務時,這一點變得非常重要。 我建議你花些時間學習一個。 例如Scons
,GNU autotools
, qmake
和Cmake
等。 我非常謹慎地使用qmake
或Cmake
因為它們既具有跨平台性又易於學習。
另一個選擇是簡單地使用IDE! 我知道並且是跨平台的Linux上最好的c++
IDE是Qt Creator
。 在引擎蓋下它支持qmake
和Cmake
項目。
如果您習慣使用Visual Studio並且必須在linux下編譯文件,則無需在命令行上開始執行所有操作;)
就像GradGuy指出的那樣, QtCreator是一個很棒的IDE,我也將它用於我的非windows構建。 但是,如果你不做任何GUI的東西,你可能想與cmake
一起使用它,因為Qt主要是關於GUI。
cmake
是解決方案文件的生成器(如VS'.sln文件),它獨立於您運行的IDE或操作系統。 這是一種自下而上的方法,你只需要很少的東西就可以開始。
以下是幫助您入門的一些步驟
cmake
你的源文件在哪里以及在哪里找到它們。 在src
上面的文件夾中創建一個文件CMakeLists.txt
並寫入以下內容:
project( myProject ) # set your include directories (if you have any) include_directories( include ) # tell cmake what what are your source files set( MY_CPP_FILES src/source1.cpp src/source2.cpp src/srcfolder1/source11.cpp src/srcfolder1/source12.cpp src/srcfolder2/source21.cpp src/srcfolder2/source22.cpp ) # if you are creating an executable then do so like this # note that ${MY_CPP_FILES} will replace it with its content add_executable( myExec ${MY_CPP_FILES} ) # if you instead want a library, do it like so add_library( myStaticLib STATIC ${MY_CPP_FILES} ) # create a static library add_library( mySharedLib SHARED ${MY_CPP_FILES} ) # create a shared library
現在啟動QtCreator並選擇File -> Open File or Project
並選擇驅動器上的CMakeLists.txt
Run CMake
Build -> Build All
祝好運!
或許,最直接的答案是:
g++ $(find src -name '*.cpp')
也就是說,擁有如此多的翻譯單元,擁有Makefile有助於在編輯源文件和構建測試時大幅縮短構建時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.