cmake - CMake 正确导出库
问题描述
我有一个小操场项目来练习 CMake,它包含一个库和一个使用该库的示例应用程序。看看:Github 上的项目 repo
我现在面临的问题是示例应用程序找不到库的标题。这就是我所做的:
cd mymath
mkdir build && cd build
cmake ..
make
sudo make install
这给了我以下输出:
[100%] Built target mymath
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libmymath.a
-- Up-to-date: /usr/local/include
-- Up-to-date: /usr/local/include/my-math
-- Up-to-date: /usr/local/include/my-math/even-odd.h
-- Up-to-date: /usr/local/include/my-math/even-odd
-- Installing: /usr/local/share/mymath/cmake/mymathConfig.cmake
-- Installing: /usr/local/share/mymath/cmake/mymathConfig-noconfig.cmake
然后,我将尝试构建示例应用程序:
cd ../../project
mkdir build && cd build
cmake ..
make
调用工作正常,但是当cmake ..
callin 时make
,我会收到以下错误消息:
.../lib-lib/project/src/main.cpp:1:10: fatal error: mymath/even-odd.h: No such file or directory
#include <mymath/even-odd.h>
^~~~~~~~~~~~~~~~~~~
编译终止。
我究竟做错了什么?
这是mymathConfig.cmake
由 CMake 生成的文件:mymathConfig.cmake
解决方案
我找到了罪魁祸首,它不在我的 CMake 文件中,而是在以下文件中。
代替:
#include <mymath/even-odd>
我不得不:
#include <my-math/even-odd>
我假设我需要库名称,但需要的是包含目录的实际文件夹结构。我的错。
解决方案
没有尝试过,我附近没有 cmake,但我会尝试
include <even-odd.h>
原因是
find_package(mymath)
将返回/usr/local/include/my-math
包含文件的搜索路径。
推荐阅读
- javascript - 尝试从表单提交和触发列表重新渲染更新 React 上下文
- ios - UITableView InfiniteScrolling 无需在 Swift 中重新加载 TableView
- reactjs - 在测试 onSubmit 时,我想模拟 API 调用而不是进行实际的 API 调用
- mysql - mysql 3表组合成1行,2个值
- r - 使用ggplot将多个图绘制成一个pdf
- android - Android TTS 线程问题
- java - 尝试使用数组获取非重复随机数
- php - PHP / FPDF:使用 colspan 创建表
- python - Pyqt QLineEdit.text() 返回空字符串
- ios - iOS BLE 连接参数是否也适用于 iOS 从站/外围设备?