为什么 cmake install() 在 VS 的 Release 文件夹中查找输出文件
Why cmake install() looks for output files in Release folder for VS
这是我的 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".
为什么它在 Release 文件夹中查找,尽管我是为 Debug 构建的?
当我为 Release 构建时,显然,一切正常。
我试图将 CONFIGURATIONS
选项添加到 install
方法,但它没有帮助。
我正在使用 Visual Studio 15.
如果我查看我的 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)
这是我的 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".
为什么它在 Release 文件夹中查找,尽管我是为 Debug 构建的?
当我为 Release 构建时,显然,一切正常。
我试图将 CONFIGURATIONS
选项添加到 install
方法,但它没有帮助。
我正在使用 Visual Studio 15.
如果我查看我的 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)