使用CMake对SDL的未定义引用
Undefined reference to SDL with CMake
我正在使用SDL(v12.15-7)和CMake(3.2.1)进行一个项目。在*.h文件中,我添加了#include <SDL.h>
,当我编译它时,我有一堆错误:对SDL_的未定义引用。。。
我认为错误来自CMakeLists.txt,但我真的不知道在哪里。
以下是文件内容:
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
SET( PROJ_NAME "Project" )
SET( PROJ_PATH ${CMAKE_SOURCE_DIR} )
SET( PROJ_OUT_PATH ${CMAKE_BINARY_DIR} )
SET( PROJ_INCLUDES "include" )
FILE( GLOB_RECURSE PROJ_SOURCES src/*cpp test/*cpp doc/*)
FILE( GLOB_RECURSE PROJ_HEADERS ${PROJ_INCLUDES}/${PROJ_NAME}/*.h )
PROJECT( ${PROJ_NAME} )
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
FIND_PACKAGE( SDL REQUIRED )
SET( PROJ_LIBRARIES ${SDL_LIBS} )
INCLUDE_DIRECTORIES( ${PROJ_INCLUDES} ${SDL_INCLUDE_DIR} )
ADD_EXECUTABLE( ${PROJ_NAME} ${PROJ_SOURCES} ${PROJ_HEADERS} )
TARGET_LINK_LIBRARIES( ${PROJ_NAME} ${PROJ_LIBRARIES} )
我还尝试了#include SDL/SDL.h
错误消息来自链接器,在这种情况下,这意味着您没有针对SDL库进行链接。
CMake文档指定FindSDL
模块定义一个名为SDL_LIBRARY
的变量,但您使用的是SDL_LIBS
。因此,改为SET(PROJ_LIBRARIES ${SDL_LIBRARY})
。
当使用标准模块查找包时,请尝试先浏览文档,看看它定义的变量。名字并不总是标准的。
尝试使用SDL_LIBRARY
而不是SDL_LIBS
您忘记在CMakeLists.txt.的最后一行将目标链接到SDL_LIBRARIES
链接器会产生错误,因此它与包含无关。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用