7

私は C++ が初めてで、ゲーム プログラミングを学ぼうとしています。SFML を選択し、Jetbrain と Ubuntu マシンを使用して CLion で実行します。私はこのチュートリアルSFML と Linux ここに私のコードに従っています:

#include <SFML/Graphics.hpp>

using namespace sf;

int main() {

RenderWindow window(sf::VideoMode(200, 200), "SFML Work!");
CircleShape shape(100.f);
shape.setFillColor(Color::Green);

while (window.isOpen()) {
    Event event;
    while (window.pollEvent(event)) {
        if (event.type == Event::Closed) {
            window.close();
        }
    }

    window.clear();
    window.draw(shape);
    window.display();
}

return 0;
}

CLionで実行するとエラーになります

CMakeFiles/SFMLBasic.dir/main.cpp.o: In function `main': 
undefined reference to `sf::String::String(char const*, std::locale const&)'
undefined reference to `sf::VideoMode::VideoMode(unsigned int, unsigned int, unsigned int)'
undefined reference to `sf::RenderWindow::RenderWindow(sf::VideoMode, sf::String const&, unsigned int, sf::ContextSettings const&)'
...
undefined reference to `sf::Shape::~Shape()'

CLion で SFML を実行するための構成またはセットアップ方法を教えてください。CMAKE でそれができるかどうかわかりません。ターミナルでのみ実行します。このコマンドを実行すると機能します。

g++ -c main.cpp
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
./sfml-app

ターミナルで毎回マニュアルを実行せずにすべての参照変数を使用するように設定するにはどうすればよいですか? ありがとう。

4

5 に答える 5

7

@Stackiaの提案を読んだ後。これは私のソリューションです。このチュートリアルを参照してください。チュートリアル: Build your SFML project with CMake

  1. フォルダーを作成し、cmake_modulesこのファイルFindSFML.cmakeをダウンロードしてコピーします。

  2. これを最後のファイルに追加して編集CMakeLists.txtし、[Reload changes] をクリックします。


# Define sources and executable set(EXECUTABLE_NAME "MySFML") add_executable(${EXECUTABLE_NAME} main.cpp)

# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2 REQUIRED system window graphics network audio)
if(SFML_FOUND)
    include_directories(${SFML_INCLUDE_DIR})
    target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
endif()

  1. これで、実行可能ファイル名MySFMLを選択して、実行 (Shift+F10) をクリックできます。それは働く! ここに画像の説明を入力
于 2014-10-29T04:33:13.840 に答える
3

CMakeLists.txt で SFML ライブラリをリンクする必要があります。

CMake target_link_librariesをご覧ください。

このリンクは、CMake で SFML ライブラリ パスを見つける方法を知るのに役立ちます。

FindSFML.cmake モジュールは次のとおりです: https://github.com/LaurentGomila/SFML/blob/master/cmake/Modules/FindSFML.cmake

于 2014-10-28T07:38:35.520 に答える