【问题标题】:Why cmake install() looks for output files in Release folder for VS为什么 cmake install() 在 VS 的 Release 文件夹中查找输出文件
【发布时间】:2018-05-20 11:35:27
【问题描述】:

这是我的 cmake 的简化版本

cmake_minimum_required(VERSION 2.8.4)
project(math)

add_library(math math.cpp)

function(install_package)
    install(TARGETS math 
        LIBRARY DESTINATION lib 
        ARCHIVE DESTINATION lib)
    add_custom_command(TARGET math 
        POST_BUILD 
        COMMAND cmake ARGS -P cmake_install.cmake)
endfunction()

install_package()

但是当我构建 Debug 版本时,我收到以下错误

CMake Error at cmake_install.cmake:55 (file):
  file INSTALL cannot find
  "<my project's root>/build/Release/math.lib".

尽管我为 Debug 构建了它,但为什么它在 Release 文件夹中查找? 当我为 Release 构建时,显然,一切正常。 我尝试将CONFIGURATIONS 选项添加到install 方法,但它没有帮助。 我正在使用 Visual Studio 15。

【问题讨论】:

    标签: visual-studio cmake installation targets


    【解决方案1】:

    如果我查看我的cmake_install.cmake,如果您没有在add_custom_command() 调用中指定任何内容,Release 是默认值:

    # Set the install configuration name.
    if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
      if(BUILD_TYPE)
        string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
               CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
      else()
        set(CMAKE_INSTALL_CONFIG_NAME "Release")
      endif()
      message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
    endif()
    

    因此,如果您查看 INSTALL.vcxproj,CMake 生成的调用如下所示:

    "C:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=$(Configuration) -P cmake_install.cmake
    

    这将转化为:

    add_custom_command(TARGET math 
        POST_BUILD 
        COMMAND ${CMAKE_COMMAND} ARGS -D BUILD_TYPE=$<CONFIG> -P cmake_install.cmake)
    

    【讨论】:

      猜你喜欢
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多