首页 > 解决方案 > 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

解决方案


没有尝试过,我附近没有 cmake,但我会尝试

include <even-odd.h>

原因是

find_package(mymath)

将返回/usr/local/include/my-math包含文件的搜索路径。


推荐阅读