• CMake使用总结(一)


    当我们在写CMakeLists.txt文件时,常常会搞不明白link_directories, LINK_LIBRARIES, target_link_libraries这3者的区别,下面就其详细介绍:
     
    • INCLUDE_DIRECTORIES(添加头文件目录)
    它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用(这里特指c++。c和Java中用法类似)。
     
    比如:
    include_directories("/opt/MATLAB/R2012a/extern/include")
     
     
    • LINK_DIRECTORIES(添加需要链接的库文件目录)
    语法:
    link_directories(directory1 directory2 ...)
    它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。
     
    比如:
    LINK_DIRECTORIES("/opt/MATLAB/R2012a/bin/glnxa64")
     
    • LINK_LIBRARIES (添加需要链接的库文件路径,注意这里是全路径)
    List of direct link dependencies.
     
    比如:
    LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")
    LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")
     
    也可以写成:
    LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so" "/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")
     
     
    • TARGET_LINK_LIBRARIES (设置要链接的库文件的名称)
    语法:TARGET_LINK_LIBRARIES(targetlibrary1 <debug | optimized> library2 ..)
     
    比如(以下写法(包括备注中的)都可以):
    TARGET_LINK_LIBRARIES(myProject hello),连接libhello.so库
    TARGET_LINK_LIBRARIES(myProject libhello.a)
    TARGET_LINK_LIBRARIES(myProject libhello.so)
     
    再如:
    TARGET_LINK_LIBRARIES(myProject #这些库名写法都可以。
    TARGET_LINK_LIBRARIES(myProject TARGET_LINK_LIBRARIES(myProject -leng)
     
     
    CMakeLists文件链接方式有如下2种:
    cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
    include_directories("/opt/MATLAB/R2012a/extern/include")     
    LINK_DIRECTORIES("/opt/MATLAB/R2012a/bin/glnxa64")       
    add_executable(myProject main.cpp)      
    target_link_libraries(myProject eng mx)      
    #equals to below  
    #target_link_libraries(myProject -leng -lmx)  
    #target_link_libraries(myProject libeng.so libmx.so) 
    
    cmake_minimum_required(VERSION 2.8 FATAL_ERROR)  
    include_directories("/opt/MATLAB/R2012a/extern/include")   
    #directly link to the libraries.  
    LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")  
    LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libmx.so") 
    #equals to below  
    #LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so" "/opt/MATLAB/R2012a/bin/glnxa64/libmx.so")  
    add_executable(myProject main.cpp
  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/hackcode/p/6050159.html
Copyright © 2020-2023  润新知