运行项目时,JetBrains CLion提供“未定义的引用”错误,但命令行编译就很好

问题描述

正在运行Ubuntu OS,最新的LTS版本。当我运行项目时,它会给我很多“对(SDL库中的函数)的未定义引用”,但是当我在命令行中使用

进行编译时

g++ main.cpp -lSDL -lSDL_ttf

它可以编译成.out文件,并且可以运行。

我在StackOverflow上尝试了许多其他人共享的方法,但没有一个起作用。

这是我的CMakeLists文件

cmake_minimum_required(VERSION 3.16)
project(Epic)

set(CMAKE_CXX_STANDARD 14)

add_executable(Epic main.cpp)

我的包括

#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>

我该怎么做才能解决此问题?

解决方法

您的CMakeLists.txt不表示链接任何库。仅包含SDL头文件就可以告诉编译器您打算使用这些功能。它没有说在哪里找到他们。您需要在CMakeLists.txt中添加TARGET_LINK_LIBRARIES(Epic SDL SDL_tff)语句。