Cmakelist在Clion外工作

时间:2016-01-25 08:43:07

标签: cmake clion pkg-config

我想暂时使用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工作

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您的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