代码之家  ›  专栏  ›  技术社区  ›  Lord Windy

Cmakelist在Clion之外工作

  •  0
  • Lord Windy  · 技术社区  · 9 年前

    我想使用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 回复  |  直到 9 年前
        1
  •  1
  •   dragn    9 年前

    如果我理解正确,您的cmake配置无法找到SDL库。我发现它更好用 find_package 命令而不是 pkg_check_modules . 为了 find_package(SDL2) 要工作,必须有 FindSDL2.cmake 目录中的模块,由指定 CMAKE_MODULE_PATH 变量(通常是 cmake/Modules 源树中的目录)。

    查找SDL2.cmake 不是CMake的一部分,但您可以在网上轻松找到一个(查看我自己的模块,例如: https://github.com/dragn/cmake-modules ). 有关详细信息,请参阅本文档: https://cmake.org/Wiki/CMake:How_To_Find_Libraries .

    查找SDL2.cmake cmake/模块 目录并将其添加到 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})
    

    注:可悲的是,莱昂纳多似乎没有成功地在SDL社区找到维护FindSDL2.cmake的志愿者: https://cmake.org/Bug/view.php?id=14826 .