在 Clion 之外工作的 Cmakelist
Cmakelist working outside of Clion
我想使用 Clion 有一段时间了,但我一直在使用 Cmake 时遇到麻烦。有了 Cygwin,我几乎让这个愚蠢的东西开始工作了。
问题是虽然我可以从 cygwin 终端编译一个 cmake 文件,但在 Clion 中我被告知找不到我想要的库。
Error:A required package was not found
cmakelist.txt 文件
cmake_minimum_required(VERSION 3.3)
project(Test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(PKG_CONFIG_PATH /usr/lib/pkgconfig)
set(PKG_CONFIG_EXECUTABLE /usr/bin/pkg-config.exe)
set(SOURCE_FILES main.cpp)
add_executable(Test ${SOURCE_FILES})
INCLUDE(FindPkgConfig)
pkg_check_modules(SDL2 REQUIRED "sdl2")
MESSAGE(STATUS "SDL library: " ${SDL2_LDFLAGS})
TARGET_LINK_LIBRARIES(Test ${SDL2_LDFLAGS})
我不知道设置变量 PKG_CONFIG_PATH 和其他变量是否有效,但他们成功地构建了一个 makefile 供我在 cygwin 中使用并正确构建。
我删除了缓存,重新制作了项目和所有内容。它只是拒绝在 Clion
中工作
如果我没理解错的话,你的cmake配置无法找到SDL库。我发现使用 find_package
命令比 pkg_check_modules
更好。
为了 find_package(SDL2)
工作,目录中必须有 FindSDL2.cmake
模块,由 CMAKE_MODULE_PATH
变量指定(通常,它是源代码树中的 cmake/Modules
目录)。
FindSDL2.cmake
不是 CMake 的一部分,但您可以轻松地在网上找到一个(查看我自己的模块,例如:https://github.com/dragn/cmake-modules)。
有关详细信息,请参阅此文档:https://cmake.org/Wiki/CMake:How_To_Find_Libraries.
将 FindSDL2.cmake
放入 cmake/Modules
目录并将其添加到您的 CMakeLists.txt
:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/Modules)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIR})
...
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})
注意:遗憾的是,Leonardo 似乎没有成功找到维护 SDL 社区 FindSDL2.cmake 的志愿者:https://cmake.org/Bug/view.php?id=14826.
我想使用 Clion 有一段时间了,但我一直在使用 Cmake 时遇到麻烦。有了 Cygwin,我几乎让这个愚蠢的东西开始工作了。
问题是虽然我可以从 cygwin 终端编译一个 cmake 文件,但在 Clion 中我被告知找不到我想要的库。
Error:A required package was not found
cmakelist.txt 文件
cmake_minimum_required(VERSION 3.3)
project(Test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(PKG_CONFIG_PATH /usr/lib/pkgconfig)
set(PKG_CONFIG_EXECUTABLE /usr/bin/pkg-config.exe)
set(SOURCE_FILES main.cpp)
add_executable(Test ${SOURCE_FILES})
INCLUDE(FindPkgConfig)
pkg_check_modules(SDL2 REQUIRED "sdl2")
MESSAGE(STATUS "SDL library: " ${SDL2_LDFLAGS})
TARGET_LINK_LIBRARIES(Test ${SDL2_LDFLAGS})
我不知道设置变量 PKG_CONFIG_PATH 和其他变量是否有效,但他们成功地构建了一个 makefile 供我在 cygwin 中使用并正确构建。
我删除了缓存,重新制作了项目和所有内容。它只是拒绝在 Clion
中工作如果我没理解错的话,你的cmake配置无法找到SDL库。我发现使用 find_package
命令比 pkg_check_modules
更好。
为了 find_package(SDL2)
工作,目录中必须有 FindSDL2.cmake
模块,由 CMAKE_MODULE_PATH
变量指定(通常,它是源代码树中的 cmake/Modules
目录)。
FindSDL2.cmake
不是 CMake 的一部分,但您可以轻松地在网上找到一个(查看我自己的模块,例如:https://github.com/dragn/cmake-modules)。
有关详细信息,请参阅此文档:https://cmake.org/Wiki/CMake:How_To_Find_Libraries.
将 FindSDL2.cmake
放入 cmake/Modules
目录并将其添加到您的 CMakeLists.txt
:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/Modules)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIR})
...
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})
注意:遗憾的是,Leonardo 似乎没有成功找到维护 SDL 社区 FindSDL2.cmake 的志愿者:https://cmake.org/Bug/view.php?id=14826.