CMakeLists.txt使用系统环境变量, 及使用pkg-config里的*.pc,及其他使用杂项

1,265 阅读1分钟
  • 引用系统环境变量

    # xx 这个环境变量应该能被 echo $xx 打印出来
    $ENV{xx}  
    
  • 先看下CMakeList.txt引用opencv.pc的逻辑

    opencv.pc.png
    OpenCV 标识了该opencv.pc文件

  • 引用pkgconfig/*.pc该文件在/usr/local/lib/pkgconfig/*.pc可以循迹查看

  • 注意,如果使用.pc文件,则只用两件套,不用三件套
    不用声明链接的库目录在哪link_directories()
    只需要两件套

    find_package(OpenCV REQUIRED)     
    # 头文件目录  
    include_directories(${OpenCV_INCLUDE_DIRS})
    # 依赖的库文件是哪些?其实target_link_libraries()就说明了库文件的目录所在  
    target_link_libraries(${OpenCV_LIBS})
    
  • 一个很有用的函数,把指定目录下的*.cpp说明成某变量

    aux_source_directory(./ SRC)
    
  • 有子目录下的CMakeLists.txt那么在顶层目录(有CMAKE_MINIMUM_REQUIRED()和PROJECT()变量的目录),使用如下函数来包含子目录下CMakeLists.txt

    add_subdirectory(./src)
    
  • 学习了几个系统变量
    PROJECT_SOURCE_DIR --> 表示最顶层目录
    PROJECT_BINARY_DIR --> 执行cmake ..命令的目录
    对于生成库文件的工程,这个变量管用,表示输出的库文件放哪
    set(LIBRARY_OUTPUT_PATH xx)
    对于生成二进制可执行文件,以下如是
    set(EXECUTABLE_OUTPUT_PATH xx)