zoukankan      html  css  js  c++  java
  • cmake技巧

    1. 变量传递,同makefile,变量可由上至下传递,包括路径声明,不带target的link_libraries等;

    顶层cmakelist

    INCLUDE_DEREATORIES(${CMAKE_CURRENT_SOURCE_DIR}/inc)
    ADD_SUBDIREATORY(xx)

    底层xx目录的cmakelist已自动将上层的inc目录添加到了头文件路径;

    2. 遍历:https://cmake.org/cmake/help/latest/command/foreach.html

    SET(SRC_DIRS
        ${CMAKE_CURRENT_SOURCE_DIR}/aa
        ${CMAKE_CURRENT_SOURCE_DIR}/bb
        ${CMAKE_CURRENT_SOURCE_DIR}/cc    
    )
    FOREACH(dir ${SRC_DIRS})
        INCLUDE_DIREACTORIES(${dir}/inc)
        AUX_SOURCE_DIREACTORY(${dir} SRCS)
    ENDFOREACH()

    3. [多个]静态库转成动态库

    99. 其他常用宏

    ADD_DEFINATIONS(-DXXXX)
    #libxxx.so
    PROJECT(xxx) 
    TARGET_LINK_LIBRARIES(${PROJECT_NAME}, PRIVATE "-Wl,--whole-archive" ${STATIC_LIBS} "-Wl,--no-whole-archive" INTERFACE -lpthread -ldl -lrt)
    CMAKE_INSTALL_RPATH 用于指定make install生成的lib and exec files的runtime path(LD链接路经,多个rpath使用“:”分隔),同时INCLUDE_DIRECTORIES 声明的路径也会被添加到rpath(同gcc/ld -rpath,可通过:readelf -d file 查看rpath)
    https://cmake.org/cmake/help/v3.14/variable/CMAKE_INSTALL_RPATH.html?highlight=rpath#variable:CMAKE_INSTALL_RPATH
    
    CMAKE_BUILD_RPATH 同上,仅仅影响make生成的lib and exec files
    
    CMAKE_SKIP_BUILD_RPATH 默认去除了make生成的lib and exec files的rpath
  • 相关阅读:
    3.3测试复盘
    计算机网络-运输层面试题整理
    3.2专项测试复盘
    2.27专项测试复盘
    2.26排序专项测试复盘
    2.25专项测试复盘
    前端基础笔记1
    2.24专项测试复盘
    2.23专项测试复盘
    更新pip报错AttributeError: 'NoneType' object has no attribute 'bytes'
  • 原文地址:https://www.cnblogs.com/zengjianrong/p/14480872.html
Copyright © 2011-2022 走看看