如何使用CMake将包包含在不同的目录中? 我试图用CCENTOS在服务器上编译一段C++代码。我需要在“/services/tools”位置包含一个作为模块安装的库(NLopt)。我尝试了“模块加载NLopt”,但CMake仍然找不到库

如何使用CMake将包包含在不同的目录中? 我试图用CCENTOS在服务器上编译一段C++代码。我需要在“/services/tools”位置包含一个作为模块安装的库(NLopt)。我尝试了“模块加载NLopt”,但CMake仍然找不到库,c++,cmake,centos,C++,Cmake,Centos,我需要做什么才能让CMake找到包?“默认情况下,[它]在/usr/local/lib中安装NLopt静态库(libnlopt.a),在/usr/local/include中安装NLopt头文件(NLopt.h),以及手册页和其他一些文件。” 因此,您可以将标题作为 include_directories("/usr/local/include") 并将图书馆链接为 target_link_libraries(project "/usr/local/lib/lbnlopt.a") 理想情况下

我需要做什么才能让CMake找到包?

“默认情况下,[它]在/usr/local/lib中安装NLopt静态库(libnlopt.a),在/usr/local/include中安装NLopt头文件(NLopt.h),以及手册页和其他一些文件。”

因此,您可以将标题作为

include_directories("/usr/local/include")
并将图书馆链接为

target_link_libraries(project "/usr/local/lib/lbnlopt.a")

理想情况下,您可以尝试为库查找CMake find模块。

假设您的库位于/service/tools/lib中,而头位于/service/tools/include中,您还可以设置CMake_前缀_路径,如下所示:

list(APPEND CMAKE_PREFIX_PATH /service/tools)

谢谢你的回答。问题在于它不是安装在默认目录中,而是安装在/services/tools/中。我确实有一个CMake查找模块,但由于安装了该库的目录,它无法找到该库。我可以按照你的建议参考这条路,但如果可能的话,我更喜欢一种更干净的方式来处理这条路。我在这里的大部分困惑可能是因为我不知道这是和操作系统还是CMake的问题。很抱歉,我忽略了一个事实,你说它在不同的位置。查找模块是否在“/服务/工具”下进行检查?这不是一个标准的位置,所以不太可能。如果确实没有,您可以修改它以在该位置查找它。但是,这比仅引用CmakeList中的路径更不干净。查找模块通常不会对系统进行广泛搜索,它们只会查找库应该位于的几个位置,例如
/usr/local/include
/usr/local/lib
usr/include
usr/lib
,等等。看起来您想要的东西与中类似。它的答案也应该适用于您:将
CMAKE\u PREFIX\u PATH
CMAKE变量设置为
/services/tools