二.cmake编译链接C文件,并且使用动态库

参考
CMake 学习(一):使用链接第三方库

一.总起

编译链接C语言时需要指定

  1. 源文件
  2. 头文件
  3. 库文件(.a,.so,-dll)

二.cmake指定源文件头文件的方式

  • include_directories 指定头文件所在目录
  • link_directories 指定库文件所在目录
  • add_executable()指定源文件所在目录
  • target_link_libraries 指定库文件,必须在add_executable()后面设置

三.例子

3.1 目录结构

目录结构

3.2 CMake的配置

cmake_minimum_required(VERSION 3.12)

project(learnH C)

set(CMAKE_C_STANDARD 99)

#指定头文件
include_directories(include)

#指定库的目录
link_directories(lib)


file(GLOB srcFile "src/*.c")
file(GLOB libFile "lib/*.c")

#指定c文件
add_executable(learnH ${srcFile} ${libFile})

#指定动态链接库
target_link_libraries(${PROJECT_NAME} Hello)

3.3生成可执行文件

点击运行按钮,会在cmake-build-debug文件夹下生产可执行文件learnH
输入命令./learnH 会报错

dyld: Library not loaded: libHello.so
Referenced from: cmake-build-debug/learnH
Reason: image not found

这是因为动态链接库libHello.so并没有在cmake-build-debug文件夹下,此时需要将libHello.so拷贝进该文件夹下即可

你可能感兴趣的:(二.cmake编译链接C文件,并且使用动态库)