Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法为编译SFML项目创建cmake规则_C++_Cmake_Sfml - Fatal编程技术网

C++ 无法为编译SFML项目创建cmake规则

C++ 无法为编译SFML项目创建cmake规则,c++,cmake,sfml,C++,Cmake,Sfml,我有build/CMakeLists.txt文件: 当我运行cmake时..&&使我有一个消息屏幕,显示我没有包含SFML库: undefined reference to `sf::VertexArray::operator[](unsigned long)' undefined reference to `sf::Keyboard::isKeyPressed(sf::Keyboard::Key)' 等等。我还尝试将标志包含到CMAKE_CXX_标志变量中: -lsfml图形-lsfml窗口

我有build/CMakeLists.txt文件:

当我运行cmake时..&&使我有一个消息屏幕,显示我没有包含SFML库:

undefined reference to `sf::VertexArray::operator[](unsigned long)'
undefined reference to `sf::Keyboard::isKeyPressed(sf::Keyboard::Key)'
等等。我还尝试将标志包含到CMAKE_CXX_标志变量中: -lsfml图形-lsfml窗口-lsfml系统它也不工作。但是,如果我直接从控制台运行g++,所有编译都很好:

g++-5 --std=c++11 -Wall main.cpp Game.cpp Window.cpp Board.cpp -lsfml-graphics -lsfml-window -lsfml-system

如果有任何不同,我使用LinuxMint。

您需要找到SFML包的位置,并添加include目录和链接

在您的CMakeLists.txt中: 更改此行:

target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
作者:

编辑:

对于SFML v1,将find_程序包行更改为:


编辑,顺便说一句,您是否正确安装了SFML?您是对的。我没有正确安装,这对我来说是一场噩梦,持续了大约四个小时。正如您所指出的,我创建了一个cmake_modules/FindSFML.cmake文件,但它说我已经安装了SFMLV1,但我从源代码编译了SFML2.4,所有这些都完成得很好。究竟g++是如何以这种方式正确编译的。@JamesMay已编辑,请更改find_package以使用SFMLBTW的v1,如果您是从源代码处编译SFML,请不要忘记以sudo o root用户的身份进行安装
target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
#Find any version 2.X of SFML
#See the FindSFML.cmake file for additional details and instructions
find_package(SFML 2 REQUIRED system window graphics)
if(SFML_FOUND)
  include_directories(${SFML_INCLUDE_DIR})
  target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
endif()
find_package(SFML 1 REQUIRED system window graphics)