我的C++項目具有以下結構相剋編譯多個源目錄++
src
|
|source1.cpp
|source2.cpp
|
|<srcfolder1>
|__ source11.cpp
|__ source12.cpp
|
|<srcfolder2>
|__ source21.cpp
|__ source22.cpp
可以看到有多個源文件的多個文件夾。 我給g ++編譯所有源文件到一個.o文件的命令是什麼?
我的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 [email protected] $<
您也可以使用可以爲您生成實際生成文件的生成系統。當你嘗試擴展你的項目並且維護一個好的時,這變得很重要makefile可能成爲一項艱鉅的任務。我建議你花一些時間來學習一個。例子是Scons
,GNU autotools
,qmake
和等等。我高度重視使用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
在您的源文件和在哪裏可以找到他們。的文件夾中創建一個文件CMakeLists.txt
以上src
及以下里面寫:
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
祝你好運!
呃,給它所有的源文件? – 2012-03-24 10:56:38
大約有100個源文件。太多,無法在命令行提示符中一一列出 – pdeva 2012-03-24 10:57:22
我認爲複雜項目中的常見方式是在每個子文件夾中都有Makefile,並從父文件夾調用它們。順便說一句,爲什麼你不使用IDE呢? – enobayram 2012-03-24 10:58:26