c++ - CMake:此项目中使用了以下变量,但它们设置为 NOTFOUND
问题描述
我是 CMake 的新手,我知道有很多 StackOverflow 帖子问这个问题,但是这些帖子都没有帮助我解决这个错误,这就是我的工作区的样子
project
.vscode
build
include\SDL2
lib\SDL2_x64
src
CMakeLists.txt
main.cpp
CMakeLists.txt
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(project VERSION 0.1.0)
include(CTest)
enable_testing()
add_subdirectory(src)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
src/CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
enable_testing()
add_executable(${CMAKE_PROJECT_NAME} main.cpp)
get_filename_component(PARENT_DIRECTORY ../ ABSOLUTE)
find_library(
SDL2_X64_LIB
PATHS "${PARENT_DIRECTORY}/lib"
)
find_path(
INCLUDE_DIR
PATHS "${PARENT_DIRECTORY}/include"
)
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC "${SDL2_X64_LIB}")
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC "${INCLUDE_DIR}")
# For debugging
message(STATUS "SDL2_LIB => ${SDL2_X64_LIB}")
message(STATUS "include_DIR => ${INCLUDE_DIR}")
我正在尝试将 SDL2 包含和库文件夹添加到 CMake,但它没有找到文件路径
-- SDL2_LIB => SDL2_X64_LIB-NOTFOUND
-- include_DIR => INCLUDE_DIR-NOTFOUND
-- Configuring done
我尝试将路径放入set()
但仍然找不到SDL2/SDL.h
,我使用的是最新版本的 CMake
解决方案
正确的解决方案是从您下载的文件中创建一个 IMPORTED 目标并链接到它。您获取了 MinGW 版本,因此我将重点放在:将其添加到根目录中的 CMakeLists.txt 中:
add_library(SDL2 STATIC IMPORTED)
set_target_properties(SDL2 PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/lib/SDL2_x64/libSDL2.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/include")
然后在其他 CMake 文件中链接到该目标:
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC SDL2)
推荐阅读
- r - RStudio 中的 ARIMA 问题 - 用于股票的 ARIMA
- java - 为什么调用同一个方法会在不同的方法中对运行时间产生不同的影响呢?
- powerbi - 如何从 sql 表中提取最新记录到 POwer BI 仪表板。?
- html - 我如何获得一个 HTML 按钮以转到我自己页面中的不同页面?
- activex - 使用 mstscax 隐藏远程桌面会话
- mysql - mysql 从另一个表创建一个表
- ruby - 自动将某些属性添加到降价标签
- regex - 所有帖子的重定向 301 - 从 joomla 迁移到 wordpress
- karate - 进行网络自动化时如何使用空手道 DSL 与 chrome 中的网络选项卡进行交互
- python - 从 Django 中的序列化程序获取特定格式的数据