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
  • 相关阅读:
    百度Apollo安装说明
    Ubuntu 16.04 kinetic 下安装turtlebot2
    三维点云地图构建方法
    jupyter中添加conda环境
    Pyplot教程(深度学习入门3)
    linux下安装tomcat,部署项目
    linux下修改系统时间
    手把手集成web端手写公式功能
    如何查看端口是被哪个程序占用的
    Bootstrap的优先级、选择器、伪类
  • 原文地址:https://www.cnblogs.com/zengjianrong/p/14480872.html
Copyright © 2011-2022 走看看