如何配置 Clion 以使用 SDL2?
How to configure Clion to work with SDL2?
我只是想学习如何在 Clion(Jetbrains IDE)中使用 SDL,我在 post 中找到了一个答案来编辑我的 CMakeLists.txt,我做到了它!!但它没有用。
我可以使用这些库,但我无法编译它,在图像中你可以看到输出控制台中的错误。
有人可以帮我配置一下吗
这是我的"CMakeLists.txt"
cmake_minimum_required(VERSION 3.6)
project(OpenGLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32")
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
set(SOURCE_FILES main.cpp)
add_executable(OpenGLTest ${SOURCE_FILES})
target_link_libraries(OpenGLTest libSDL2main libSDL2 libSDL2_test)
这是我的 "main.cpp"
#include <iostream>
#include <SDL.h>
int main() {
SDL_Init(SDL_INIT_EVERYTHING);
std::cout << "Hello, World!" << std::endl;
return 0;
}
PS: 这是我写的代码,只是为了测试编译。
这是 Clion 控制台中的错误
Error
我无法发表评论,但我认为你应该删除每个 link 库之前的 lib
:target_link_libraries(OpenGLTest SDL2main SDL2 SDL2_test)
(错误信息说找不到 -llibSDL2main
正确的标志应该是 -lSDL2main
)
"CMakeLists.txt"的正确文字是:
cmake_minimum_required(VERSION 3.6)
project(OpenGLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32")
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
set(SOURCE_FILES main.cpp)
add_executable(OpenGLTest ${SOURCE_FILES})
target_link_libraries(OpenGLTest mingw32 SDL2main SDL2)
并且您必须将文件 "SDL2.dll"(位于 \bin 中)复制到 "cmake-build-debug" 文件夹中。这是一个例子 https://gyazo.com/fae7ab9ccc73e3a66e9d9c2d3419ff1e
PS:不要忘记 "include" 和 "lib" 文件夹
这是用于测试的示例代码。
#include <iostream>
#include <SDL.h>
int main(int argc, char* argv []) {
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
std::cout << "Hello, World!" << std::endl;
SDL_Quit();
return 0;
}
将SDL2.dll(位于x86_64-w64-mingw32\bin)复制到C:\Windows\System32文件夹作为永久解决方案,然后重启你的OS .
不要忘记在 CMakeLists.txt
中添加以下内容
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32")
设置(CMAKE_EXE_LINKER_FLAGS“-static-libgcc-static-libstdc++”)
我有以下配置文件:
cmake_minimum_required(VERSION 3.17)
project(vector_fields_simulations)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set(CMAKE_CXX_STANDARD 14)
find_package(SDL2 REQUIRED)
include_directories(.)
include_directories(src)
include_directories(${SDL2_INCLUDE_DIR})
add_executable(vector_fields_simulations src/main.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})
和我唯一需要做的就是改变 SLD2/SDL.h
by ../SLD2/SDL.h
注意 1:我在名为 cmake 的文件夹中使用 FindSDL2.cmake (github link),以便项目包含 SDL,后者不是强制性的,但它可能帮你。
注2:如果您的程序在编译时抛出错误,请尝试在.cpp
主文件中的main
函数之前使用#undef main
或将其更改为main(int argv, char** args)
.
我只是想学习如何在 Clion(Jetbrains IDE)中使用 SDL,我在 post 中找到了一个答案来编辑我的 CMakeLists.txt,我做到了它!!但它没有用。
我可以使用这些库,但我无法编译它,在图像中你可以看到输出控制台中的错误。
有人可以帮我配置一下吗
这是我的"CMakeLists.txt"
cmake_minimum_required(VERSION 3.6)
project(OpenGLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32")
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
set(SOURCE_FILES main.cpp)
add_executable(OpenGLTest ${SOURCE_FILES})
target_link_libraries(OpenGLTest libSDL2main libSDL2 libSDL2_test)
这是我的 "main.cpp"
#include <iostream>
#include <SDL.h>
int main() {
SDL_Init(SDL_INIT_EVERYTHING);
std::cout << "Hello, World!" << std::endl;
return 0;
}
PS: 这是我写的代码,只是为了测试编译。
这是 Clion 控制台中的错误
Error
我无法发表评论,但我认为你应该删除每个 link 库之前的 lib
:target_link_libraries(OpenGLTest SDL2main SDL2 SDL2_test)
(错误信息说找不到 -llibSDL2main
正确的标志应该是 -lSDL2main
)
"CMakeLists.txt"的正确文字是:
cmake_minimum_required(VERSION 3.6)
project(OpenGLTest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32")
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
include_directories(${PROJECT_SOURCE_DIR}/include)
link_directories(${PROJECT_SOURCE_DIR}/lib)
set(SOURCE_FILES main.cpp)
add_executable(OpenGLTest ${SOURCE_FILES})
target_link_libraries(OpenGLTest mingw32 SDL2main SDL2)
并且您必须将文件 "SDL2.dll"(位于 \bin 中)复制到 "cmake-build-debug" 文件夹中。这是一个例子 https://gyazo.com/fae7ab9ccc73e3a66e9d9c2d3419ff1e
PS:不要忘记 "include" 和 "lib" 文件夹
这是用于测试的示例代码。
#include <iostream>
#include <SDL.h>
int main(int argc, char* argv []) {
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
return 1;
}
std::cout << "Hello, World!" << std::endl;
SDL_Quit();
return 0;
}
将SDL2.dll(位于x86_64-w64-mingw32\bin)复制到C:\Windows\System32文件夹作为永久解决方案,然后重启你的OS .
不要忘记在 CMakeLists.txt
中添加以下内容- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -lmingw32") 设置(CMAKE_EXE_LINKER_FLAGS“-static-libgcc-static-libstdc++”)
我有以下配置文件:
cmake_minimum_required(VERSION 3.17)
project(vector_fields_simulations)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set(CMAKE_CXX_STANDARD 14)
find_package(SDL2 REQUIRED)
include_directories(.)
include_directories(src)
include_directories(${SDL2_INCLUDE_DIR})
add_executable(vector_fields_simulations src/main.cpp)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})
和我唯一需要做的就是改变 SLD2/SDL.h
by ../SLD2/SDL.h
注意 1:我在名为 cmake 的文件夹中使用 FindSDL2.cmake (github link),以便项目包含 SDL,后者不是强制性的,但它可能帮你。
注2:如果您的程序在编译时抛出错误,请尝试在.cpp
主文件中的main
函数之前使用#undef main
或将其更改为main(int argv, char** args)
.