本文用来记录基本的Cmake用法,以一个实例,讲解如何通过cmake构建一个一个基本的工程,文件的目录如下:
说明:
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工程。
到这里,一个简易的基本的cmake配置文件的框架就完成了。cmake功能非常强大,更复杂的功能参考CMake官网。
原文:https://www.cnblogs.com/lzm-cn/p/9094626.html