在Linux下使用C++时,有人可以提出一些组织源文件和管理构建的好方法.我使用CMake来管理我的构建,虽然我现在不使用复杂的构造.我们假设我们有以下三种情况.
1.对于makefile应用程序,只需从简单的.cpp和.h文件构建一些可执行文件
.2.创建一个使用其他流行共享库的静态/共享库,例如OpenCV和OpenGL.
3.更复杂的类型,例如,让我们说我们需要创建一个可执行文件,其源文件使用外部库,如OpenCV,以及我们自己构建的自定义静态库(例如,我们自己构建的自定义静态库)用上面的step2构建).
我相信你们中的许多人都在复杂的库项目上工作,而构建过程并不那么简单.我真的很期待开源爱好者和黑客为开源项目做出贡献的惊人答案.你们是如何组织源代码的?
由于您使用的是 CMake,我建议使用源代码构建(完全在项目根目录之外或在build项目根目录的子目录中)当同时使用多个配置和/或编译器时,您可以为每个配置和/或编译器创建一个单独的构建目录一。
在项目根目录中,我设置了子目录中所有文件CMakeLists.txt都将使用的内容。我将可执行文件和库的所有源代码放在一个子目录中,通常我将形成单个库或可执行文件的源代码分组到它们自己的子目录中,并附上描述如何构建它的随附文件。我通常不会将包含文件与源代码分开。CMakeLists.txtsrcsrcsrcCMakeLists.txt
我在项目根目录中还有一个cmake子目录,其中放置了特定于 CMake 的文件,例如查找模块,在我的例子中,有一个特殊的 cmake 模块,它修复了 Eclipse IDE 自动发现的路径。
|--cmake
| |
| |--FindXXX.cmake
|
|--src
| |
| |--projectABC
| | |
| | |--CMakeLists.txt
| |
| |--library1
| | |
| | |--CMakeLists.txt
| |
| |--library2
| |
| |--CMakeLists.txt
|
|--CMakeLists.txt
|
|--build-release
|--build-debug
|--build-msvc-release
|--[...]
Run Code Online (Sandbox Code Playgroud)