Linking SDL2 - CLion - Ubuntu 16.04 - G++
Linking SDL2 - CLion - Ubuntu 16.04 - G++
>背景信息
正如标题所说,我在使用 CLion 和 G++ 的 Ubuntu 16.04 上,我无法链接 SDL2。
SDL2.h 可在External Libraries/Header Search Paths/include/SDL2
的项目中找到。这似乎链接到/usr/include/SDL2
.
因此,找到头文件后,我可以毫无问题地#include <SDL2/SDL.h>
。然而,当我尝试使用 SDL2 时,例如SDL_Init( SDL_INIT_EVERYTHING )
,我得到了一个undefined reference
。
如果我使用g++ main.cpp -lSDL2 -o test
从终端编译,则没有错误。但是,如果我使用g++ main.cpp -o test
从终端编译,那么我有与 CLion 相同的错误!
问题
如何将 SDL2 链接到 Cmake?我是否已将此标志-lsdl2
正确添加到 CMake 文件中?如果我正确添加了它,那么我错过了什么?
主.cpp
#include <iostream>
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
SDL_Init( SDL_INIT_EVERYTHING );
std::cout << "Hello, World!" << std::endl;
SDL_Quit();
return 0;
}
CMakeList.txt
cmake_minimum_required(VERSION 3.12)
project(untitled2)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lSDL2")
add_executable(untitled2 main.cpp)
您只需要搜索 SDL2 软件包并将其链接到目标。 不要为此使用CMAKE_CXX_FLAGS
(或任何类型的链接/标头路径/等(;请尝试以下操作:
find_package(SDL2 REQUIRED SDL2)
:
add_executable(untitled2 main.cpp)
target_link_libraries(untitled2
PRIVATE SDL2::SDL2
)
这将拉入适当的标题等。 请注意,这不会自动包括您可能需要或想要的SDL_main
库或其他库。
此外,对于旧版本的 SDL2,SDL2::SDL2
可能不起作用,您可能只需要SDL2
。 不过,如果是这种情况,我建议升级。
你可以试试
SET(CMAKE_CXX_LINK_FLAGS "-lSDL2")
我修改了@rpav给出的答案。此项目具有测试 SDL2 实际上与 CLion 一起工作所需的最少代码量。
主.cpp
#include <iostream>
#include <SDL2/SDL.h>
int main(int argc, char* argv[]) {
SDL_Init( SDL_INIT_EVERYTHING );
std::cout << "Hello, World!" << std::endl;
SDL_Quit();
return 0;
}
CMakeList.txt
cmake_minimum_required(VERSION 3.12)
project(untitled2)
set(CMAKE_CXX_STANDARD 11)
find_package(SDL2 REQUIRED SDL2)
add_executable(untitled2 main.cpp)
target_link_libraries(untitled2 PRIVATE SDL2)
大部分CMake文件由CLion提供。唯一的附加代码行是find_package(SDL2 REQUIRED SDL2)
和target_link_libraries(untitled2 PRIVATE SDL2)
。澄清一下,untitled2
是我项目的名称。
- 无法在 CLion 中构建 C++ 项目
- C++:如何在CLion IDE中安装Boost
- 如何使用CLion在Mac上创建一个新的.txt文件
- IDE (CLion) 无法解析C++模板类型
- Clion显示错误,但可以使用Cmake成功构建代码
- 如何将 CLion C++ 项目导入 Visual Studio?
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- clion 无法解析 std 类型
- 在装有 CLion 的 Mac 上使用 C++ 连接到 MySQL 数据库时出现问题
- 如何让 CLion 显示异常?
- CLion 无法在 macOS 上找到 Eigen3
- 如何将 OpenMP 和 MPI 导入到大型 CLion CMake 项目中?
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- CLion - 无法解决类中对构造函数的未定义引用
- Linking SDL2 - CLion - Ubuntu 16.04 - G++
- fdeclspec not enabled -- cLion Mac
- CLion、MinGW 和 SDL2:进程已完成,退出代码为 -1073741515 (0xC0000135)
- 无法在 CLion 中编译 OpenCV 头文件
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 程序在CLion IDE中工作,但exe不起作用