免费做网站送域名的,网站排名网络推广,深圳市设计装饰工程有限公司,沽源网站建设案例目录
一、基础命令
二、编译选项和设置
三、文件和目录操作
四、控制流命令
五、其他命令 六、CMake构建级别 CMake是一个跨平台的自动化建构系统#xff0c;它使用一种人类可读的配置文件#xff08;CMakeLists.txt#xff09;来控制软件编译过程。以下是CMake中的一些…目录
一、基础命令
二、编译选项和设置
三、文件和目录操作
四、控制流命令
五、其他命令 六、CMake构建级别 CMake是一个跨平台的自动化建构系统它使用一种人类可读的配置文件CMakeLists.txt来控制软件编译过程。以下是CMake中的一些常用命令按照功能和类型进行分类
一、基础命令
cmake_minimum_required指定CMake的最低版本要求。 示例cmake_minimum_required(VERSION 3.10)project定义项目的名称和版本。 示例project(MyProject VERSION 1.0)add_executable将源代码文件编译为可执行文件。 示例add_executable(my_program main.cpp)add_library将源代码文件编译为库文件。SHARED表示动态库STATIC表示静态库。 示例add_library(my_lib SHARED my_lib.cpp)MESSAGE在CMake配置过程中打印信息。 示例MESSAGE(STATUS This is a status message.)set为变量设置值。 示例set(MY_VARIABLE some_value)install安装文件到指定的目录。install的安装可以包括二进制、动态库、静态库以及文件、目录、脚本等。 示例install(TARGETS my_program DESTINATION bin)
二、编译选项和设置
add_definitions向C/C编译器添加-D定义。 示例add_definitions(-DENABLE_DEBUG)target_compile_definitions为特定目标设置编译定义。 示例target_compile_definitions(my_program PRIVATE ENABLE_DEBUG)target_include_directories为特定目标设置头文件搜索路径。 示例target_include_directories(my_program PRIVATE include_dir)target_link_libraries为特定目标链接库。 示例target_link_libraries(my_program PRIVATE another_lib)
三、文件和目录操作
file用于文件操作如读取、写入、复制等。 示例file(GLOB SRC_LIST ./src/*.cpp)aux_source_directory搜索指定目录中的源文件。 示例aux_source_directory(. SRC_LIST)add_subdirectory将另一个CMakeLists.txt文件添加到构建中。 示例add_subdirectory(subdirectory)
四、控制流命令
if条件语句。 示例if(UNIX)while 和 foreach循环语句但CMake中较少使用。
五、其他命令
include包含其他CMake文件。 示例include(OtherCMakeLists.txt)configure_file配置文件模板并替换其中的变量。find_package 和 find_library搜索并加载外部库或包。add_test 和 enable_testing添加测试目标和启用测试。
CMake语法指定了许多变量如下 注意
变量使用${}方式取值但是在 IF 控制语句中是直接使用变量名指令是大小写无关的参数和变量是大小写相关的指令(参数 1 参数 2…) 参数使用括弧括起参数之间使用空格或分号分开。例如add_executable(hello main.cpp func.cpp)或者add_executable(hello main.cpp;func.cpp)set(SRC_LIST main.cpp) 可以写成 set(SRC_LIST “main.cpp”)如果源文件名中含有空格就必须要加双引号add_executable(hello main) 后缀可以不写他会自动去找.c和.cpp最好不要这样写可能会有这两个文件main.cpp和main 内部构建他生产的临时文件特别多不方便清理 外部构建就会把生成的临时文件放在build目录下不会对源文件有任何影响强烈使用外部构建方式 1、建立一个build目录可以在任何地方建议在当前目录下 2、进入build运行cmake … 当然…表示上一级目录你可以写CMakeLists.txt所在的绝对路径生产的文件都在build目录下了 3、在build目录下运行make来构建工程 六、CMake构建级别
CMake具有许多内置的构建配置可用于编译工程。 这些配置指定了代码优化的级别以及调试信息是否包含在二进制文件中。这些优化级别主要有
Release —— 不可以打断点调试程序开发完成后发行使用的版本占的体积小。 它对代码做了优化因此速度会非常快在编译器中使用命令 -O3 -DNDEBUG 可选择此版本。 Debug ——调试的版本体积大。在编译器中使用命令 -g 可选择此版本。 MinSizeRel——最小体积版本。在编译器中使用命令-Os -DNDEBUG可选择此版本。 RelWithDebInfo—— 既优化又能调试。在编译器中使用命令-O2 -g -DNDEBUG可选择此版本。 在命令行运行CMake的时候 使用cmake命令行的-D选项配置编译类型 cmake .. -DCMAKE_BUILD_TYPERelease
示例
cmake_minimum_required(VERSION 3.5)
#如果没有指定则设置默认编译方式
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)#在命令行中输出message里的信息message(Setting build type to RelWithDebInfo as none was specified.)#不管CACHE里有没有设置过CMAKE_BUILD_TYPE这个变量都强制赋值这个值为RelWithDebInfoset(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING Choose the type of build. FORCE)# 当使用cmake-gui的时候设置构建级别的四个可选项set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug ReleaseMinSizeRel RelWithDebInfo)
endif()project (build_type)
add_executable(cmake_examples_build_type main.cpp)