本文共 1095 字,大约阅读时间需要 3 分钟。
客户要求创建一个新项目 t4,其目录结构如下:
t4/├── main.c├── hello.h└── src/ └── main.c
hello.h 文件位于路径 /root/cpp_test/backup/cmake_test/t4/include/hello,并非标准系统头文件路径。因此,需在 src/CMakeLists.txt 中添加 INCLUDE_DIRECTORIES 指令:
INCLUDE_DIRECTORIES(/root/cpp_test/backup/cmake_test/t4/include/hello)
重新构建项目后,编译过程中出现了错误:main.c:(.text+0x12): undefined reference to 'func'。因为缺少动态链接到 libhello。
为了解决依赖问题,需在 src/CMakeLists.txt 中添加 TARGET_LINK_LIBRARIES 指令,指定共享库路径:
TARGET_LINK_LIBRARIES(main /root/cpp_test/backup/cmake_test/t4/thirdPath/libhello.so.1.2)
重新构建后,编译生成的可执行文件 bin/main 已正确链接到共享库 libhello.so.1.2。
运行命令查看链接情况:
ldd bin/main
输出显示 bin/main 确实连接到共享库 libhello,具体路径为 libhello.so.1。
将 TARGET_LINK_LIBRARIES 指令改为静态库:
TARGET_LINK_LIBRARIES(main /root/cpp_test/backup/cmake_test/t4/thirdPath/libhello.a)
重新构建后,再次运行 ldd src/main 检查链接结果:
ldd src/main
输出显示 bin/main 已成功连接到静态库 libhello.a。
以上步骤展示了使用 CMake 脚本配置项目时的关键操作,包括:
这些操作帮助确保了工程能够正确构建并运行,解决了动态链接依赖问题。通过实践掌握了 CMakeLists.txt 中常用指令的使用方法。
转载地址:http://nfbpz.baihongyu.com/