Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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

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-CLion/Cmake_C++_Cmake_Sfml_Clion - Fatal编程技术网

C++ 未找到SFML-CLion/Cmake

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

我基本上是在尝试在CLion中创建一个使用CMake的SFML项目

我首先下载了SFML2.2,它已经构建了.dylib文件。它说要在usr/local/lib和usr/local/include中安装它们,但它们不存在,所以我创建了它们,然后将文件放在那里

然后,我打开CLion,创建了一个子目录cmake_modules,将FindSFML.cmake文件放在其中,并在根项目目录中放置了以下文件:

main.cpp

问题是,当我尝试构建项目时,会出现以下错误:

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,有帮助吗?