Почему cmake install () ищет выходные файлы в папке Release для VS - PullRequest
0 голосов
/ 20 мая 2018

это упрощенная версия моего 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()

Но при сборке отладочной версии я получаю следующую ошибку

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

Почему она выглядит в папке Release, несмотря на то, что япостроить для отладки?Когда я собираю для Release, то, очевидно, все работает.Я пытался добавить опцию CONFIGURATIONS к методу install, но это не помогло.Я использую Visual Studio 15.

1 Ответ

0 голосов
/ 20 мая 2018

Если я посмотрю в мой cmake_install.cmake, Release будет значением по умолчанию, если вы ничего не указали в своем add_custom_command() вызове:

# 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...