PROJECT(main)
#表示项目的名称是 main
CMAKE_MINIMUM_REQUIRED(VERSION
2.6)
#限定 CMake 的版本
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
#将当前目录中的所有的源文件名称赋值给变量 DIR_SRCS
ADD_EXECUTABLE(main
${DIR_SRCS})
#变量
DIR_SRCS 中的源文件需要编译 成一个名称为 main 的可执行文件
ADD_SUBDIRECTORY(
src )
#指明本项目包含一个子目录 src
TARGET_LINK_LIBRARIES(
main Test )
#可执行文件 main 需要连接一个名为Test的链接库
ADD_LIBRARY
( Test ${DIR_TEST1_SRCS})
#将
DIR_TEST1_SRCS目录中的源文件编译为共享库
在工程中查找并使用其他程序库的方法:
01
MESSAGE(STATUS "Using bundled Findlibdb.cmake...")0203
FIND_PATH(04
LIBDB_CXX_INCLUDE_DIR05
db_cxx.h 06
/usr/include/ 07
/usr/local/include/ 08
)09
10
FIND_LIBRARY(11
LIBDB_CXX_LIBRARIES NAMES db_cxx12
PATHS /usr/lib/ /usr/local/lib/13
)文件
Findlibdb_cxx.cmake 的命名要符合规范:
FindlibNAME.cmake
,其中NAME 是函数库的名称
-
-
命令MESSAGE会将参数的内容输出到终端。
-
命令FIND_PATH指明头文件查找的路径,原型如下:
find_path(<VAR> name1 [path1 path2 ...])该命令在参数path*指示的目录中查找文件name1并将查找到的路径保存在变量VAR中。清单5第3-8行的意思是在/usr/include/和/usr/local/include/中查找文件db_cxx.h ,并将db_cxx.h所在的路径保存在LIBDB_CXX_INCLUDE_DIR中。 -
命令FIND_LIBRARY同FIND_PATH类似,用于查找链接库并将结果保存在变量中。清单5第10-13行的意思是在目录/usr/lib/和/usr/local/lib/中寻找名称为db_cxx的链接库,并将结果保存在LIBDB_CXX_LIBRARIES。
在项目的根目录中创建可以查找链接库的 CMakeList.txt
01
PROJECT(main)02
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)03
SET(CMAKE_SOURCE_DIR .)04
SET(CMAKE_MODULE_PATH ${CMAKE_ROOT}/Modules ${CMAKE_SOURCE_DIR}/cmake/modules)
#到目录
./cmake/modules 中查找 Findlibdb_cxx.cmake
05
AUX_SOURCE_DIRECTORY(. DIR_SRCS)06
ADD_EXECUTABLE(main ${DIR_SRCS})07
#8-19
行表示查找链接库和头文件的过程08
FIND_PACKAGE( libdb_cxx REQUIRED)09
MARK_AS_ADVANCED(10
LIBDB_CXX_INCLUDE_DIR11
LIBDB_CXX_LIBRARIES12
)13
IF (LIBDB_CXX_INCLUDE_DIR AND LIBDB_CXX_LIBRARIES)14
MESSAGE(STATUS "Found libdb libraries")15
INCLUDE_DIRECTORIES(${LIBDB_CXX_INCLUDE_DIR})16
MESSAGE( ${LIBDB_CXX_LIBRARIES} )17
TARGET_LINK_LIBRARIES(main ${LIBDB_CXX_LIBRARIES}18 )19
ENDIF (LIBDB_CXX_INCLUDE_DIR AND LIBDB_CXX_LIBRARIES)
使用 cmake 生成 debug 版和 release 版的程序
https://www.ibm.com/developerworks/cn/linux/l-cn-cmake/
7912

被折叠的 条评论
为什么被折叠?



