关于在Linux下组织C开发的源代码和构建的建议(CMake as generator)

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
|--[...]

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...