• CMake使用小结


    根据近期的项目开发中对CMake的使用进行一些总结。

    CMake主要用于构建C++/C的工程项目,能自动配置依赖所依赖的头文件、.lib文件和.dll文件并且配置项目属性。如此,可以实现对项目工程的复用以提高开发效率。感觉CMake中很重要的一个点就是要明白相对路径的重要性。

    1.设置wchar_t为内置类型为否
     

    ADD_DEFINITIONS (/Zc:wchar_t-)

    2.添加头文件依赖的目录

    1. INCLUDE_DIRECTORIES(
    2. ${CMAKE_SOURCE_DIR}/YourHeaderFile
    3. )

    ${CMAKE_SOURCE_DIR}为最高层的CMakeLists.txt所在位置。这么写表示你要依赖的头文件是放在最高层的CMakeLists.txt所在位置的YourHeaderFile文件夹下。

    3.设置需要排除的文件夹并遍历排除

    1. set(EXCLUDED_DIRS "Hello" "World")
    2. # 遍历排除的文件夹
    3. foreach(dir ${EXCLUDED_DIRS})
    4. list(APPEND EXCLUDE_DIR_ARGS "--exclude-dir=${CMAKE_SOURCE_DIR}/${dir}")
    5. endforeach()

    如此设置,那么名为Hello跟World的文件夹及其中包含的文件都将不会被参与编译。上面也可以不遍历排除,直接一条一条排除也可以

    4.FILE GLOB+链接.lib依赖

    FILE GLOB命令主要用于匹配规则在指定的目录内匹配到所需要的文件

    1. file(GLOB USER_LIBS_PATH ${CMAKE_SOURCE_DIR}/lib/*.lib)
    2. target_link_libraries(${PROJECT_NAME} ${USER_LIBS_PATH})

    如上语句将会把目录CMakeLists.txt所在位置下的lib文件夹中所有符合*.lib(通配符方式)结尾的文件存入USER_LIBS_PATH变量中。

    target_link_libraries则是将匹配到的所有.lib文件链接到项目中。

    可参考:cmake 遍历目录获取所有文件名 - 简书

    5.file GLOB+file COPY构建.dll依赖

    .dll的依赖主要放到和生成的可执行文件在一个目录下,这个时候就需要用copy把需要链接的.dll进行拷贝放置。

    1. file(GLOB USER_DLLS_PATH ${CMAKE_SOURCE_DIR}/dll/*.*)
    2. file(COPY ${USER_DLLS_PATH} DESTINATION ${OUTPUT_DIR}/Debug)

    如上代码段会将dll文件夹中的所有文件拷贝放到Debug文件当中。

    6.设置预处理定义

    主要是用target_compile_definitions。

    总之CMake还有其他好多的功能,接下来还是需要边用边学了。

  • 相关阅读:
    2023lc笔试复盘
    css打造漫天飞舞的蝴蝶
    数据挖掘与知识发现 导论
    使用EasyExcel实现Excel导入导出
    python DVWA命令注入POC练习
    SpringMVC 01: SpringMVC + 第一个SpringMVC项目
    shiro原理简介说明
    后Kubernetes时代,每个行业需要定制化的符合自身的云原生战略
    【高德地图API】JS高德地图API实现多边形绘画,高德获取多边形提交数据
    音视频编解码技术学习笔记
  • 原文地址:https://blog.csdn.net/qq_42987967/article/details/132875157