CMake入门实战
2018-05-26 23:34
225 查看
本文用来记录基本的Cmake用法,以一个实例,讲解如何通过cmake构建一个一个基本的工程,文件的目录如下:
说明:
- bin文件夹下的debug和release分别存放编译输出的文件和相关依赖的动态库。
- common为公共目录,include为公共头文件,libs里面是公共静态库。
- mysqlpp目录下是当前项目的源代码。
- CMakeList.txt是用来编写组织工程结构配置的文件。
编写CMakeList.txt
CMakeList.txt的详细内容如下,每一个配置都有详细的说明,可以根据实际需求删减部分配置或者增添部分配置。这里的实例是生成一个动态库的
#需要cmake的最低版本 CMAKE_MINIMUM_REQUIRED (VERSION 3.5.2) #设置一个变量作为工程名字以及输出文件名 SET ( MYSQLPP_LIBRARY_NAME "mysqlpp" ) PROJECT (${MYSQLPP_LIBRARY_NAME}) #头文件包含路径 INCLUDE_DIRECTORIES( common/include common/include/mysql ) #预编译宏 所有宏都以 -D 开头 ADD_DEFINITIONS( -D_USRDLL -DDLL_EXPORTS -DUNICODE -D_UNICODE -DMYSQLPP_MAKING_DLL -DHAVE_MYSQL_SSL_SET ) #静态库库路径 LINK_DIRECTORIES( common/libs ) #添加需要链接的静态库名称(此处添加的是存在debug版本的静态库) SET(LINK_LIBRARY libmysql ) #配置debug版本静态库的名字后面加 'd',区别debug与release版本,这里规则可能不一样,根据实际情况调整 set (LINK_LIST "") foreach(x ${LINK_LIBRARY}) list (APPEND LINK_LIST debug ${x}d optimized ${x}) endforeach() #头文件 FILE(GLOB CURRENT_HEADERS "mysqlpp/*.h") SOURCE_GROUP("Header Files" FILES ${CURRENT_HEADERS}) #源文件 FILE(GLOB SOURCES "mysqlpp/*.cpp") #设置输出路径 set(LIBRARY_OUTPUT_PATH bin) #指定输出静态库的名字 ADD_LIBRARY(${MYSQLPP_LIBRARY_NAME} SHARED ${SOURCES} ${CURRENT_HEADERS} ) #添加所有链接的静态库 target_link_libraries( ${MYSQLPP_LIBRARY_NAME} #只有release版本的库单独写到这里,就是debug与release均链接这个库,不做区分 ws2_32 #存在debug与release两个版本的静态库直接引用上面经过处理的宏 ${LINK_LIST} )
生成工程文件
以windows下生成指定版本的vs工程文件为例,讲解如何用命令行生成指定版本的vs工程。
- 打开cmd命令行,切换到CmakeList.txt所在的目录。
- 输入如下命令并执行:
生成的vs解决方案如下:
说明: -G表示生成的目标工程类型,这里指定的vs2008的工程,默认的32位工程,也可以通过参数指定要生成的工程位数为64为,具体参数如下:
到这里,一个简易的基本的cmake配置文件的框架就完成了。cmake功能非常强大,更复杂的功能参考CMake官网。
相关文章推荐
- CMake快速入门教程:实战,本文参考《CMake Practice》这篇文章
- CMake快速入门教程-实战
- cmake入门实战
- CMake快速入门教程:实战
- CMake入门学习+实战<三> 静态库与动态库构建
- CMake入门学习+实战<四> 使用外部共享库和头文件+实战:使用CLion调用zlib静态库实现pdf flatedecode解码
- CMake 入门实战(精)
- CMake入门学习+实战<二> helloworld完善
- CMake 入门实战 | HaHack
- CMake 入门实战
- CMake 入门实战
- CMake 入门实战,从实例入手,讲解 CMake 的常见用法,例如aux_source_directory的用法
- Cmake入门实战
- 转:CMake快速入门教程-实战
- CMake入门实战
- CMake 入门实战(转)
- CMake快速入门教程-实战
- CMake 入门实战
- CMake 入门实战
- CMake 入门实战