我正在使用一个称为ENKI的开源模拟器。它附带了一个示例,其中禁用了所有SDL功能。我通过定义一个变量来启用它。但是,现在make返回所有SDL函数的错误,例如未定义对`SDL_Init']的引用
#define USE_SDL 0 // This is the line I added #ifdef USE_SDL #include </usr/include/SDL/SDL.h> #endif
我查看了makefile及其调用/引用的其他文件。但是,我不知道应该更改什么。我看到了一些关于在makefile中进行修改的解决方案,但是由于cmake的结构非常复杂,因此我不确定应该在哪里进行这些更改
Playground.cpp.o: cd /home/yadav/Downloads/enki && $(MAKE) -f examples/playground/CMakeFiles/enkiplayground.dir/build.make examples/playground/CMakeFiles/enkiplayground.dir/Playground.cpp.o .PHONY : Playground.cpp.o
我相信这是makefile的一部分,它从cpp文件构建对象,并从上面的路径调用build.make文件。
examples/playground/CMakeFiles/enkiplayground.dir/Playground.cpp.o: examples/playground/Playground.cpp @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/yadav/Downloads/enki/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object examples/playground/CMakeFiles/enkiplayground.dir/Playground.cpp.o" cd /home/yadav/Downloads/enki/examples/playground && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/enkiplayground.dir/Playground.cpp.o -c /home/yadav/Downloads/enki/examples/playground/Playground.cpp
而且我认为这是使用flag.make中的参数实际创建对象的行,如下所示:
CXX_FLAGS = -fPIC -std=gnu++11 CXX_DEFINES = -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB CXX_INCLUDES = -I/home/yadav/Downloads/enki/examples/playground/enkiplayground_autogen/include -I/home/yadav/Downloads/enki -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtOpenGL
CMakeFiles/enkiplayground.dir/Playground.cpp.o: In function `EnkiPlayground::EnkiPlayground(Enki::World*, QWidget*)': Playground.cpp:(.text._ZN14EnkiPlaygroundC2EPN4Enki5WorldEP7QWidget[_ZN14EnkiPlaygroundC5EPN4Enki5WorldEP7QWidget]+0xa1): undefined reference to `SDL_Init' Playground.cpp:(.text._ZN14EnkiPlaygroundC2EPN4Enki5WorldEP7QWidget[_ZN14EnkiPlaygroundC5EPN4Enki5WorldEP7QWidget]+0xc9): undefined reference to `SDL_GetError' Playground.cpp:(.text._ZN14EnkiPlaygroundC2EPN4Enki5WorldEP7QWidget[_ZN14EnkiPlaygroundC5EPN4Enki5WorldEP7QWidget]+0x106): undefined reference to `SDL_NumJoysticks'
这是我得到的错误的开始。
我正在使用一个称为ENKI的开源模拟器。它附带了一个示例,其中禁用了所有SDL功能。我通过定义一个变量来启用它。但是,现在make返回所有SDL的错误...
#define USE_SDL 0 // This is the line I added #ifdef USE_SDL #include </usr/include/SDL/SDL.h> #endif