自己经常建立一些工程,各种从别的地方拷贝 CMakeLists 片段,很麻烦。
所以整理了一份无比清爽简洁的 templates 。关键词: C , C++, Qt , CMake , OpenCV , BOOST 。
1
kendetrics 2016-05-07 22:56:00 +08:00
感谢分享
|
2
lsmgeb89 2016-05-07 23:03:48 +08:00 via Android
奥,不错
|
3
tobyxdd 2016-05-07 23:04:11 +08:00 via Android
不错 不过怎么没有 qt5 的
|
4
dvorak4tzx OP @tobyxdd 因为我们是实验室还在用 Qt4 ,没有换 Qt5 的意向(毕竟对 Qt5 需求不大,而 Qt5 变动太大)。
|
5
dvorak4tzx OP OpenCV3 的还没有测试。 Qt5 的这两天会添加(看了一下 [官网的教程]( http://doc.qt.io/qt-5/cmake-manual.html) 似乎还不那么简单)。
这些模板的第一原则是精简,适合入门。我项目李用的 CMakeLists 通常都比这复杂(很多平台的判断,对编译、链接的控制,等)。在这几个简单的例子之后,我会添加一两个综合性地例子。谢谢关注,欢迎 PR 。 |
6
xuboying 2016-05-08 03:34:35 +08:00 via Android
我只会用 vsGUI ,请教楼主 cmake 怎么 target debug 和 release 版本?
|
7
dvorak4tzx OP @xuboying 你是说如果直接用 CMake 生成 Visual Studio 的 Release 和 Debug 版本?简单的说是不可以,因为 VS 有自己的方式来 build debug 和 release (甚至自定义的 build )。我记得 CMake 文档里提到过。
或者你是说怎么用 CMake 和 VS ?刚写了一个 Issue :[HOWTO: CMake + Visual Studio 2010 · Issue #1 · district10/cmake-templates]( https://github.com/district10/cmake-templates/issues/1)。 |
8
patrickstar 2016-05-08 12:44:42 +08:00
谢谢分享,已 star ,正准备采用 CMake 来管理 Windows 和 Linux 下的 C++工程项目
|
9
secondwtq 2016-05-08 13:07:38 +08:00
一直用 JetBrains 家 CLion 的,官方钦定用 CMake
后来我就全换 CMake 了 不过 VS 居然还可以用,涨姿势了 |
10
xuboying 2016-05-08 15:13:21 +08:00 via Android
@dvorak4tzx 你看下工程属性的编译选项,其实是可以区分的, debug 会带 _debug 宏,参数是 MDd/MTd , release 是 MD /MT
|
11
dvorak4tzx OP VS 当然有“能力”区分 release 和 debug ,只是说 cmake 不能直接在 CMakeLists 里配置「生成工程是 debug 还是 release 属性」( GNUMake 工程可以)。参考: http://stackoverflow.com/questions/19024259/how-to-change-the-build-type-to-release-mode-in-cmake/20423820#20423820
在 Linux 上,`cmake -DCMAKE_BUILD_TYPE=Release ..` 可以直接生成 release 版本的 Makefile ,然后 `make` 就会生成 release 版本的 binary ;但对于 Visual Studio 工程,用 CMake-GUI 其实等价于命令行运行: ``` cmake.exe -G"Visual Studio 10 2010 Win64" .. ``` 加不加 `-DCMAKE_BUILD_TYPE=Release` 没区别(因为 VS 工程只能在编译的时候选择编译选项)。 |
12
dvorak4tzx OP @xuboying 不过好像也有说可以直接在生成 *sln 的时候指定的: http://stackoverflow.com/a/35580404
|