安装CMake后,我找不到带有`find_package`的软件包

时间:2018-06-04 19:24:51

标签: c++ build cmake libraries

我已使用以下命令安装了库(SDL):

cmake --build . --target install

我在文档中读到安装的软件包将在CMAKE_SYSTEM_PREFIX_PATH

中注册

但是当我打印出变量时它是空的。

目前我正在使用Windows,我在线阅读我应该在注册表中注册安装路径,但它根本没有帮助。

如何使用find_package()?

找到SDL

2 个答案:

答案 0 :(得分:0)

尝试一下:

  

使用get_cmake_property函数,将显示以下循环   列出所有定义的CMake变量及其值:

get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
     

要打印环境变量,请使用CMake的命令模式:

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")

它打印:

-- CMAKE_SYSTEM_PREFIX_PATH=/usr/local;/usr;/;/usr;/usr/local;/usr/X11R6;/usr/pkg;/opt

(贷记Sakra

您可以在源树中搜索名为FindSDL*.cmake的文件,然后尝试在CMAKE_SYSTEM_PREFIX_PATH目录中找到该文件。

如果CMAKE_SYSTEM_PREFIX_PATH仍然为空,请尝试在整个计算机中找到FindSDL*.cmake,以检查文件是否安装在cmake知道的地方,或尝试将此路径附加到{{1 }}。

您还可以检查以下链接: Using SDL2 with CMake

答案 1 :(得分:0)

我相信这对您不起作用的原因是,您的find_package文件中的project命令位于CMakeLists.txt命令之前。如果确保project是第一个命令(在cmake_minimum_required(VERSION <NUM>之后),则所有CMAKE_SYSTEM_***变量都将正确初始化:)

在遇到完全相同的问题后,我实际上偶然发现了该帖子(请参阅我对第一个问题的评论)。我使用foreach VARIABLES命令尝试了j4x发布的建议,以打印所有变量,并在我的project命令之后偶然地将其粘贴。我注意到CMAKE_SYSTEM_PREFIX_PATH是一个合理的值-然后我将代码移到project命令上方,并注意到打印出的变量要少得多:P CMAKE_SYSTEM_PREFIX_PATH哪里也看不到...

我希望这对您也有用!