在Linux下使用C时,有人可以提出一些组织源文件和管理构建的好方法.我使用CMake来管理我的构建,虽然我现在不使用复杂的构造.
我们假设我们有以下三种情况.
1.对于makefile应用程序,只需从简单的.cpp和.h文件中构建一些可执行文件
2.用于创建使用其他流行共享库的静态/共享库
例如,OpenCV和OpenGL.
3.更复杂的类型,例如,让我们说我们需要创建一个可执行文件
源文件使用OpenCV等外部库以及我们的自定义静态库
已经建立了自己(例如,一个自定义的静态库,其中包含我们相关的标题
用上面的step2构建).
我相信你们中的许多人都在复杂的库项目上工作,而构建过程并不那么简单.我真的很期待开源爱好者和黑客为开源项目做出贡献的惊人答案.你们是如何组织源代码的?
最佳答案
由于您正在使用CMake,我建议使用源代码构建(完全在外部或在项目根目录的构建子目录中)当同时使用多个配置和/或编译器时,您可以创建一个单独的构建目录每一个.
在项目根目录的CMakeLists.txt中,我设置了src子目录中所有CMakeLists.txt文件使用的东西.我将可执行文件和库的所有源代码放在src子目录中,通常我将在src中自己的子目录中构成单个库或可执行文件的源与一个描述如何构建它的CMakeLists.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
|--[...]