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
  • 相关阅读:
    hdu 2106 decimal system
    00-自测4. Have Fun with Numbers (20)
    07-图4. Saving James Bond
    hdu 2209 翻纸牌游戏
    hdu 1272 小希的迷宫
    1969 Pie
    怎样维护 SQLite
    Navicat使用亮点
    Navicat for MySQL 11 Mac安装教程
    Navicat for PostgreSQL 运算符有哪些类别
  • 原文地址:https://www.cnblogs.com/zengjianrong/p/14480872.html
Copyright © 2011-2022 走看看