[英]CMake is unable to find SFML directories in Windows when creating a simple project
我最近下载了Windows版CMake,因为我想为SFML开发一个跨平台的插件,并决定按照此处的指南测试如何做。 按照指南,我在Documents目录中创建了一个名为sfml_test_cmake
(Windows 10)的文件夹,其中包含CMakeLists.txt
, main.cpp
(具有SFML代码),以及一个文件夹cmake_modules
,其中将包含文件FindSFML.cmake 。 CMakeLists.txt
如下所示:
cmake_minimum_required(VERSION 3.9)
project(SFML-CmakeTest)
set(EXECUTABLE_NAME "sfml_test_cmake")
add_executable(${EXECUTABLE_NAME} main.cpp)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2.4 REQUIRED system window graphics network audio)
target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
install(TARGETS ${EXECUTABLE_NAME} DESTINATION bin)
而main.cpp
(这是一个简单的测试程序)如下所示:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow testWindow{ sf::VideoMode{ 640, 480 }, "Test Window", sf::Style::Default };
while (testWindow.isOpen())
{
sf::Event winEvent;
while (testWindow.pollEvent(winEvent))
{
if (winEvent.type == sf::Event::Closed)
{
testWindow.close();
}
}
testWindow.clear();
testWindow.display();
}
}
至于SFML的安装位置,它既安装在我的Documents目录中,又安装在我的C:\\
驱动器中。 为了最终构建代码,我打开了cmd.exe
,在用于构建的文件夹内创建了一个新目录,然后运行cmake ..
我得到的错误是:
CMake Error at cmake_modules/FindSFML.cmake:357 (message):
Could NOT find SFML (missing: SFML_SYSTEM_LIBRARY SFML_WINDOW_LIBRARY
SFML_GRAPHICS_LIBRARY SFML_NETWORK_LIBRARY SFML_AUDIO_LIBRARY)
在查找FindSFML.cmake
,我发现了这一点:
# define the list of search paths for headers and libraries
set(FIND_SFML_PATHS
${SFML_ROOT}
$ENV{SFML_ROOT}
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw
/opt/local
/opt/csw
/opt)
这告诉我,如果我在Linux上,Cmake只会搜索SFML所在的目录,并解释为什么找不到目录。 为了解决此问题,我将功能更改为以下内容:
# define the list of search paths for headers and libraries
set(FIND_SFML_PATHS
${SFML_ROOT}
$ENV{SFML_ROOT}
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw
/opt/local
/opt/csw
/opt
C:/)
但是,这次重建导致了同样的错误,这让我感到困惑。 我究竟做错了什么?
不要修改原始的FindSFML.cmake。 而是定义一个变量CMAKE_PREFIX_PATH ,该变量包含计算机上应安装SFML的路径。 在搜索路径列表中添加“ C:\\”将不起作用,cmake不会递归搜索指定路径中的所有目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.