在 cmake 中找不到 SDL 库
SDL library couldn't be found in cmake
我正在尝试编写一个cmake。我将同时使用 OpenGL、SDL 和 OpenCV。问题是 cmake 操作正确完成,但如果我输入 make 命令,它会说 SDL/SDL.h "没有这样的文件或目录">
我的cmake是这样的:
cmake_minimum_required (VERSION 3.2)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
project (VisionTest)
# compiler version checking does not work if CMAKE_CXX_COMPILER is not set
if (CMAKE_CXX_COMPILER)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
message("GCC version: ${GCC_VERSION}")
if (GCC_VERSION VERSION_GREATER "5.0.0" OR GCC_VERSION VERSION_EQUAL "5.0.0")
message(STATUS "GCC version >= 5.0, use CXX11_ABI=1")
else()
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
endif()
endif()
find_package(OpenCV)
find_package(SDL2 REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
include_directories(
${GLEW_INCLUDE_DIR}
${OPENGL_INCLUDE_DIR}
${SDL2_INCLUDE_DIRS}
)
add_executable(
VisionTest
src/arucoDetect.cpp
)
target_link_libraries(VisionTest ${OpenCV_LIBS}
${SDL2_LIBRARY}
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
)
在源代码中,我包括:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/core.hpp"
#include "opencv2/shape.hpp"
#include <opencv2/aruco.hpp>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <stdlib.h>
#include <stdio.h>
#include <sstream>
#include <vector>
#include <cmath>
#include <list>
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <GL/glut.h>
#include <algorithm>
#include <math.h>
#include <iostream>
最后,我的项目目录结构是:
CMakeCache.txt Makefile camera_calibration.cpp paths.cmake
CMakeLists.txt README.md cmake_install.cmake src
./src:
arucoDetect.cpp
和 paths.cmake 作为指导,我从我的朋友那里拿来了同一个项目(但很复杂(:
# define platform specific paths in this file
SET(TOOLCHAIN_DIR "/opt" CACHE STRING "")
include(cmake/TargetArch.cmake)
target_architecture(ARCH)
MESSAGE("TOOLCHAIN_DIR is set to: ${TOOLCHAIN_DIR}")
MESSAGE("BUILDING FOR: ${ARCH}")
#include target specific linker and include_directories
IF(${ARCH} MATCHES "aarch64")
set(QT5_DIR ${TOOLCHAIN_DIR}/qt5-odroid)
set(ZEROMQ_INCLUDE_PATH ${TOOLCHAIN_DIR}/zeromq-odroid/include)
set(ZEROMQ_LIB_PATH ${TOOLCHAIN_DIR}/zeromq-odroid/lib)
set(PROTOBUF_INCLUDE_PATH ${TOOLCHAIN_DIR}/protobuf-odroid/include)
set(PROTOBUF_LIB_PATH ${TOOLCHAIN_DIR}/protobuf-odroid/lib)
set(PROTOBUF_PROTOC ${TOOLCHAIN_DIR}/protobuf-host/bin/protoc)
set(LIBSODIUM_LIB_PATH ${TOOLCHAIN_DIR}/libsodium-odroid/lib)
set(OpenCV_DIR ${TOOLCHAIN_DIR}/opencv-odroid/share/OpenCV/)
ELSEIF(${ARCH} MATCHES "x86_64")
set(QT5_DIR ${TOOLCHAIN_DIR}/qt5-host)
set(ZEROMQ_INCLUDE_PATH ${TOOLCHAIN_DIR}/zeromq-host/include)
set(ZEROMQ_LIB_PATH ${TOOLCHAIN_DIR}/zeromq-host/lib)
set(PROTOBUF_INCLUDE_PATH ${TOOLCHAIN_DIR}/protobuf-host/include)
set(PROTOBUF_LIB_PATH ${TOOLCHAIN_DIR}/protobuf-host/lib)
set(PROTOBUF_PROTOC ${TOOLCHAIN_DIR}/protobuf-host/bin/protoc)
set(LIBSODIUM_LIB_PATH ${TOOLCHAIN_DIR}/libsodium-host/lib)
set(OpenCV_DIR ${TOOLCHAIN_DIR}/opencv-host/share/OpenCV/)
ENDIF(${ARCH} MATCHES "aarch64")
# set Qt CMake paths
set(CMAKE_PREFIX_PATH ${QT5_DIR}/lib/cmake)
set(Qt5Core_DIR ${QT5_DIR}/lib/cmake/Qt5Core)
set(Qt5Scxml_DIR ${QT5_DIR}/lib/cmake/Qt5Scxml)
set(Qt5Qml_DIR ${QT5_DIR}/lib/cmake/Qt5Qml)
set(Qt5Network_DIR ${QT5_DIR}/lib/cmake/Qt5Network)
set(Qt5Test_DIR ${QT5_DIR}/lib/cmake/Qt5Test)
MESSAGE("CMAKE_PREFIX_PATH is set to: ${CMAKE_PREFIX_PATH}")
MESSAGE("Qt5Core_DIR is set to: ${Qt5Core_DIR}")
MESSAGE("Qt5Scxml_DIR is set to: ${Qt5Scxml_DIR}")
MESSAGE("Qt5Qml_DIR is set to: ${Qt5Qml_DIR}")
MESSAGE("Qt5Network_DIR is set to: ${Qt5Network_DIR}")
MESSAGE("Qt5Test_DIR is set to: ${Qt5Test_DIR}")
我刚刚开始使用 cmake,所以我找不到任何可以正确使用的东西。谢谢大家!
感谢@Marco A。我发现了问题。我使用 SDL 作为代码,并尝试包含 SDL2。我安装了 sdl1.2 并添加了 SDL 绑定。要安装 SDL,请执行以下操作:
sudo apt-get install libsdl1.2-dev
而新的 cmake 是:
cmake_minimum_required (VERSION 3.2)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
project (VisionTest)
# compiler version checking does not work if CMAKE_CXX_COMPILER is not set
if (CMAKE_CXX_COMPILER)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
message("GCC version: ${GCC_VERSION}")
if (GCC_VERSION VERSION_GREATER "5.0.0" OR GCC_VERSION VERSION_EQUAL "5.0.0")
message(STATUS "GCC version >= 5.0, use CXX11_ABI=1")
else()
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
endif()
endif()
find_package(OpenCV)
find_package(SDL2 REQUIRED)
find_package(SDL REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
include_directories(
${GLEW_INCLUDE_DIR}
${OPENGL_INCLUDE_DIR}
${SDL2_INCLUDE_DIRS}
)
add_executable(
VisionTest
src/arucoDetect.cpp
)
target_link_libraries(VisionTest ${OpenCV_LIBS}
${SDL2_LIBRARY}
${SDL_LIBRARY}
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
)
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 在 cmake 中找不到 SDL 库
- SDL_ttf找不到"SDL.h",但主要的.cpp可以
- 在时找不到SDL.h
- 在使用 g++ 编译简单的 SDL 程序时找不到 -lSDLmain 和 -lSDL
- SDL 在发布构建配置上找不到 -lSDL_main
- 在 g++ 编译中找不到 SDL.h
- 包含语句:找不到 SDL/SDL.h 文件
- 为android编译SDL时找不到ifaddrs.h标头
- SDL 找不到我的主要功能
- Project1.exe已停止工作.我似乎找不到我的SDL代码到底出了什么问题
- 我找不到这个函数(SDL/OpenGL)的内存泄漏
- 编译器找不到 SDL?