一 相关概念
target_link_libraries -->指定'目标链接'的'库'
1)官网'不推荐'使用'link_directoris',而是'推荐'使用'find_package'和'find_library'寻找'共享库的绝对路径',再'传给'target_link_libraries'使用'
2)'link_directories'必须放在link_libraries'之前'
1)link_libraries已经'被废弃了'-->Deprecated
⑤ 如何调用
二 实践
① 项目初始化
1)新建一个'项目目录',此项目'调'用'上一个'项目创建的'库'
2)创建'源文件(src)子目录'和'外部编译(build)子目录'
3)编写'项目根目录'下的'CMakeLists.txt'文件
② src中编写源码文件
需求: 引用'linear.h'这个头文件,并'调用'了库中的函数'linear_fit()'
备注: std中的':'换成'::'
③ 编写src子目录的CMakeLists.txt文件
错误1: ${PROJECT_BINARY_DIR}/bin,而不是'${PROJECT_BINARY_DIR/bin}'
错误2: 第一行少个')'
④ 第一次测试
⑤ 第一次修改
备注: 外部库'不在'当前'项目下'
⑥ 第二次测试
⑦ 第二次修改
修改'错误': '应为'link_libraries(/tmp/install/lib/liblinear.so)
⑧ 第三次测试
⑨ 第三次修改
⑩ 第四次测试
⑪ 看下目标链接是不是动态库
⑫ 改为添加静态库
1)make没问题,'生成的目标'运行也没问题
2)ldd --> '链接'上的也是'静态库'
⑬ 继续测试
备注: 这里最好有个'对比','link_directories'在'add_executable'后-->'报错信息'
备注: 测试'没毛病'
⑭ 明确指定
测试'1': 明确指定'动态库' -->'so'
测试'2': 明确指定'静态库' -->'a'
备注: link_directories指定'库目录'