我的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