Modern CMake
程序员文章站
2022-05-26 15:15:09
...
reference
- awesome-cmake
- cmake-init 通用项目cmake模板项目
- cmake-examples 各种cmake项目示例
- conan config cmake and manage package like pip+requirement.txt
- cmake-commands cmake项目命令用法文档
build system
总结:对于C/C++,推荐用cmake+make或者meson+ninja。
- cmake/qmake/premake, make +++
- gnu build system: autotool/autoconf/automake
- meson/cmake, ninja: meson and ninja is python package +++
- ant/maven: for java, apache
- bazel: google, big project https://bazel.build/faq.html +
- buck: facebook
- gradel: ant+maven, apache
demo
- 创建CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(demo)
add_executable(out main.cpp)
- 创建main.cpp 并执行
mkdir build
cd build
cmake ..
make 或者 cmake --build .
cmake 功能
- 包管理
find_package(<name> REQUIRED)
- 构建编译
add_excutable(<name> <sourcefile>...)
add_library(<name> [SHARED|STATIC|INTERFACE]<sourcefile>...)
add_subdirectory(<dir>)
target_include_directories()
target_sources()
target_link_libraryies()
file(GLOB_RECURSE cpp_samples RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)
- 测试
ctest, CDash, gtest
enable_testing()
add_executable()
add_test(<testname> <command> [arg...])
- 安装
cpack,生成安装包
# copy files to <dir>
install(FILES|TARGETS <file>... DESTINATION <dir>)
# 导出让其它cmake项目用
install(EXPORT <target> NAMESPACE <name> DESTINATION <dir>)
- 通用
set(<name> <value>) #设置变量值
unset(<name>) #取消变量
include(<cmake file>) #包含子项目
message(STATUS "hello world") #输出信息
上一篇: vim 文本替换操作
下一篇: vim&及文本操作命令练习
推荐阅读
-
cmake qt5
-
Linux源码安装mysql 5.5.13 (cmake编译)
-
[Modern PHP] 第二章 新特性之六 Zend OPcache
-
【Modern OpenGL】转换 Transformations
-
【Modern OpenGL】纹理 Textures
-
Modern OpenGL :光照shader
-
OpenGL的环境搭建(cmake+glfw+glew+vs2017)
-
米尔MYD-YA157C中Qt的opencv库编译移植 cmake-gui
-
Windows下CMake编译VisualStudio2017工程项目
-
Linux-6.5下基于cmake28来编译安装mysql服务配置解析_MySQL