我有一个练习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目录的实际文件夹结构。我不好。
答案 0 :(得分:0)
还没有尝试过,我也没有cmake,但是我会尝试
include <even-odd.h>
原因是
find_package(mymath)
将返回/usr/local/include/my-math
作为包含文件的搜索路径。