CMake 头文件路径 动态库路径

include_directories

相当于 gcc 选项中的 -I 参数,也相当于环境变量中 C_INCLUDE_PATH 和 CPLUS_INCLUDE_PATH 的作用。

include_directories("/usr/include/SDL2")

set(MY_INCLUDE /usr/include/SDL2)
include_directories(${
    
    MY_INCLUDE})

find_package(SDL2 REQUIRED)
include_directories(${
    
    SDL2_INCLUDE_DIRS})

link_directories

相当于 gcc 选项中的 -L 参数,也相当于环境变量中 LIBRARY_PATH 的作用。

link_directories("/usr/local/lib")

set(MY_LIBRARY /usr/local/lib)
link_directories(${
    
    MY_LIBRARY})

link_libraries

指明库的全路径,包括库名

  • 用在 add_executable 之前
  • 好像用来链接静态库
  • 好像已经被废弃了,现在用 target_link_libraries

target_link_libraries

相当于 gcc 选项中 -lm -lpthread -lSDL2 等参数,用于链接动态库

  • 用在 add_executable 之后
  • 用来链接动态库
target_link_libraries(myplay SDL2)
target_link_libraries(myplay -lSDL2)
target_link_libraries(myplay libSDL2-2.0.so.0)
target_link_libraries(myplay /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0)
target_link_libraries(myplay 
                     ${
    
    OpenCV_LIBS}
                     -lavcodec
                     -lavdevice
                     -lavfilter
                     -lavformat
                     -lavutil
                     -lswresample
                     -lswscale
                     -lm
                     -lSDL2
                     )

猜你喜欢

转载自blog.csdn.net/weixin_43742643/article/details/113816857