C++ 未找到SFML-CLion/Cmake
我基本上是在尝试在CLion中创建一个使用CMake的SFML项目 我首先下载了SFML2.2,它已经构建了.dylib文件。它说要在usr/local/lib和usr/local/include中安装它们,但它们不存在,所以我创建了它们,然后将文件放在那里 然后,我打开CLion,创建了一个子目录cmake_modules,将FindSFML.cmake文件放在其中,并在根项目目录中放置了以下文件: main.cpp 问题是,当我尝试构建项目时,会出现以下错误:C++ 未找到SFML-CLion/Cmake,c++,cmake,sfml,clion,C++,Cmake,Sfml,Clion,我基本上是在尝试在CLion中创建一个使用CMake的SFML项目 我首先下载了SFML2.2,它已经构建了.dylib文件。它说要在usr/local/lib和usr/local/include中安装它们,但它们不存在,所以我创建了它们,然后将文件放在那里 然后,我打开CLion,创建了一个子目录cmake_modules,将FindSFML.cmake文件放在其中,并在根项目目录中放置了以下文件: main.cpp 问题是,当我尝试构建项目时,会出现以下错误: Undefined symbo
Undefined symbols for architecture x86_64:
"sf::err()", referenced from:
_main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我试着寻找解决办法,但似乎没有一个奏效。我是否将文件放错了位置,或者忘记了导入CMake设置?我知道用Xcode设置SFML会更容易,但如果可能的话,我更喜欢使用CLion。好的,所以我做了一个全新的项目,在我的终端上运行Xcode select-install,生成/usr/local/a目录,由编译器搜索,下载了SFML 2.3而不是2.2,决定使用SFML附带的FindSFML.cmake文件,并使我的CmakeLists.txt文件如下所示:
cmake_minimum_required(VERSION 3.2)
project(SFMLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(SFMLTest ${SOURCE_FILES})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "~/SFML-2.3/cmake/Modules/")
find_package(SFML REQUIRED graphics window system)
if (SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(SFMLTest ${SFML_LIBRARIES})
endif(SFML_FOUND)
这将在CLion中编译并运行以下代码:
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "Window");
while (window.isOpen())
{
sf::Event e;
while (window.pollEvent(e))
{
if (e.type == sf::Event::Closed)
{
window.close();
}
}
window.clear();
window.display();
}
return 0;
}
我不知道到底是什么把一切都修好了,但我很高兴它修好了。希望这能帮助其他陷入类似困境的人。好的,所以我做了一个全新的项目,在我的终端上运行xcode select-install来生成/usr/local/a目录,由编译器搜索,下载了SFML 2.3而不是2.2,决定使用SFML附带的FindSFML.cmake文件,并使我的CmakeLists.txt文件如下所示:
cmake_minimum_required(VERSION 3.2)
project(SFMLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(SFMLTest ${SOURCE_FILES})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "~/SFML-2.3/cmake/Modules/")
find_package(SFML REQUIRED graphics window system)
if (SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(SFMLTest ${SFML_LIBRARIES})
endif(SFML_FOUND)
这将在CLion中编译并运行以下代码:
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace std;
int main()
{
sf::RenderWindow window(sf::VideoMode(640, 480), "Window");
while (window.isOpen())
{
sf::Event e;
while (window.pollEvent(e))
{
if (e.type == sf::Event::Closed)
{
window.close();
}
}
window.clear();
window.display();
}
return 0;
}
我不知道到底是什么把一切都修好了,但我很高兴它修好了。希望这能帮助其他陷入类似困境的人。对于其他通过brew下载SFML的人,我通过将其添加到我的CMakeLists.txt中来解决这个问题
set(SFML_ROOT /usr/local/lib)
对于通过brew下载SFML的其他人,我通过将其添加到我的CMakeLists.txt中来解决此问题
set(SFML_ROOT /usr/local/lib)
对于SFML2.5和更高版本,采用了更现代的方法,并且设置cmake更容易 示例CMakeLists.txt
set(SFML_ROOT /usr/local/lib)
注:
不再需要设置FindSFML.cmake或SFML_ROOT等
SFML_库、SFML_依赖项和SFML_包含_目录不存在
再
有关SFML 2.5和更高版本的更多信息,我们采用了更现代化的方法,并且设置cmake更容易 示例CMakeLists.txt
set(SFML_ROOT /usr/local/lib)
注:
不再需要设置FindSFML.cmake或SFML_ROOT等
SFML_库、SFML_依赖项和SFML_包含_目录不存在
再
更多信息您看到了吗:?@Tsyvarev该链接没有真正的帮助,我在这里找到了另一个链接:并准确地复制了底部的makefile配置,但现在它显示了致命错误:“SFML/Graphics.hpp”文件未找到它还显示了make[3]:***没有规则使target/Users/Rutvik/Downloads/SFML-2.3/lib/libsfml-system.dylib你看到了吗:?@Tsyvarev这个链接没有真正的帮助,我在这里找到了另一个链接:并准确地复制了底部的makefile配置,但现在它显示了致命错误:“SFML/Graphics.hpp”文件没有找到它还显示make[3]:***没有规则使target/Users/Rutvik/Downloads/SFML-2.3/lib/libsfml-system.dylibI无法使用此选项,我通过brew下载了SFML,有帮助吗?我无法使用此选项,我通过brew下载了SFML,有帮助吗?