美文网首页
cmake文件添加静态库和动态库

cmake文件添加静态库和动态库

作者: 岁月静好忄 | 来源:发表于2022-10-26 14:50 被阅读0次
    添加静态库
    target_link_libraries( ${PROJECT_NAME} PUBLIC E:/Project/cpp/learnOpenGL/ThirdParty/glfw/glfw3.lib )
    

    说明:
    1、target_link_libraries必须放在add_executable或者add_library之后
    2、${PROJECT_NAME}是工程名称,一般设置了project(HelloWorld)才会直接用${PROJECT_NAME}
    3、PUBLIC其他可用的字符还有 PRIVATEINTERFACE

    PUBLIC 在public后面的库会被Link到你的target中,并且里面的符号也会被导出,提供给第三方使用。
    PRIVATE 在private后面的库仅被link到你的target中,并且终结掉,第三方不能感知你调了啥库
    INTERFACE 在interface后面引入的库不会被链接到你的target中,只会导出符号。

    为了防止找不到符号和链接问题,推荐使用PUBLIC
    4、E:/Project/cpp/learnOpenGL/ThirdParty/glfw/glfw3.lib这一串东西就是静态库的位置。

    添加动态库
    ## 拷贝单个动态库文件
    add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD       
        COMMAND ${CMAKE_COMMAND} -E copy_if_different 
           "E:/Project/cpp/learnOpenGL/ThirdParty/opencv-3.4.6/x64/vc16/bin/opencv_world346d.dll"  #需要拷贝的文件 
            "${CMAKE_BINARY_DIR}/Debug") #拷贝到哪个目录
    
    ## 拷贝多个动态库文件,直接将所有的动态库放到文件夹下,拷贝文件夹即可
    add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD 
        COMMAND ${CMAKE_COMMAND} -E copy_directory 
       "${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/OpenCV/bin/win64"  #需要拷贝的文件夹
       "${CMAKE_BINARY_DIR}/Debug" )#拷贝到哪个目录
    

    其实动态库基本都是拷贝到可执行文件目录下的,因为之所以叫动态库,就是程序在运行时加载的文件,所以要把程序依赖的动态库直接拷贝到可执行文件的目录下即可。

    相关文章

      网友评论

          本文标题:cmake文件添加静态库和动态库

          本文链接:https://www.haomeiwen.com/subject/fyiazrtx.html