Cmake使用方法
命令:ccmake directory(含有CmakeLists.txt) #配置CmakeLists.txt里面相关的变量,一般不需要
命令:cmake directory(含有CmakeLists.txt) #根据CmakeLists.txt生成Makefile文件
命令:Make #执行Makefile
基本结构
依赖CMakeLists.txt文件,项目主目标一个,主目录中可指定包含的子目录
在项目CMakeLists.txt中使用project指定项目名称,add_subdirectory添加子目录
子目录CMakeLists.txt将从父目录CMakeLists.txt继承设置
Cmakelists文件命令
指定编译包含源文件
方法1:
add_library(demo demo.cpp test.cpp util.cpp)
方法2:先搜索文件夹在添加文件
aux_source_directory(. SRC_LIST) # 搜索当前目录下的所有.cpp文件
add_library(demo ${SRC_LIST})
设置编译输出类型
add_executable(demo demo.cpp) # 生成可执行文件 exe 可执行
add_library(common STATIC util.cpp) # 生成静态库 .lib .a
add_library(common SHARED util.cpp) # 生成动态库或共享库 .dll .so
设置链接库搜索目录
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs)
列表变量操作
List(关键字 <list> …<index>…<element>…)
关键字
LENGTH 返回list的长度
GET 返回list中index的element到value中
APPEND 添加新element到list中
FIND 返回list中element的index,没有找到返回-1
INSERT 将新element插入到list中index的位置
REMOVE_ITEM 从list中删除某个element
REMOVE_AT 从list中删除指定index的element
REMOVE_DUPLICATES 从list中删除重复的element
REVERSE 将list的内容反转
SORT 将list按字母顺序排序
查找安装好的库
find_package(name REQUIRED)
REQUIRED 找不到name就报错停止cmake处理
执行../share/cmake-3.16/Modules下Find<name>.cmake文件
CMAKE_MODULE_PATH
目录列表,分号分割,find_package和include命令会使用。默认为空,由工程设置
执行一个cpp文件(main)
file(READ “…/vtkRequireLargeFilesSupport.cxx" VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE)
check_cxx_source_runs("${VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE}"
VTK_REQUIRE_LARGE_FILE_SUPPORT)