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

问题描述 投票:2回答:2

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

cmake --build . --target install

我在文档中读到安装包将在CMAKE_SYSTEM_PREFIX_PATH中注册。

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

目前我正在使用Windows,我在网上看到我应该在注册表中注册安装路径,但它根本没用。

我怎样才能找到带有find_package()的SDL?

c++ build cmake libraries
2个回答
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知道的文件是否正在安装或尝试将此路径附加到CMAKE_SYSTEM_PREFIX_PATH

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


0
投票

我认为这不适合你的原因是因为你的find_package命令出现在你的project文件中的CMakeLists.txt命令之前。如果你确保project是第一个命令(在cmake_minimum_required(VERSION <NUM>之后),那么所有的CMAKE_SYSTEM_***变量都将被正确初始化:)

在遇到完全相同的问题后,我偶然发现了这篇文章(请参阅我对初始问题的评论)。我尝试了j4x使用foreach VARIABLES命令发布的建议来打印所有变量,并在我的project命令之后偶然粘贴它。我注意到CMAKE_SYSTEM_PREFIX_PATH是一个明智的价值 - 然后我把代码移到了project命令之上,注意到打印的变量少得多:P CMAKE_SYSTEM_PREFIX_PATH无处可见......

我希望这也适合你!

© www.soinside.com 2019 - 2024. All rights reserved.