CMake正确导出库

时间:2018-08-17 14:37:39

标签: cmake

我有一个练习CMake的小型游乐场项目,它包含一个库和使用该库的示例应用程序。看看:Project repo on Github

我现在面临的问题是,示例应用程序找不到库的标头。这就是我要做的:

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 ..调用工作正常,但是在调用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>
          ^~~~~~~~~~~~~~~~~~~

编译终止。

我在做什么错了?

这是CMake生成的mymathConfig.cmake文件:mymathConfig.cmake

解决方案

我找到了罪魁祸首,它不在我的CMake文件中,而是在以下文件中。

代替:

#include <mymath/even-odd>

我必须:

#include <my-math/even-odd>

我当时假设我需要这个库名,但是需要的是include目录的实际文件夹结构。我不好。

1 个答案:

答案 0 :(得分:0)

还没有尝试过,我也没有cmake,但是我会尝试

include <even-odd.h>

原因是

find_package(mymath)

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