CMAKE_DEFAULT_CONFIGS does not affect install targets for Ninja Multi-Config
Consider the following project:
cmake_minimum_required(VERSION 3.16)
project(test_nmc_install CXX)
set(source_file "${CMAKE_CURRENT_BINARY_DIR}/lib.cpp")
file(WRITE "${source_file}" "int foo() {return 0;}")
set(CMAKE_DEBUG_POSTFIX "_debug")
add_library(lib "${source_file}")
install(TARGETS lib)
$ cmake .. -G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="Release;Debug" -DCMAKE_INSTALL_PREFIX=/home/alex/nmc_install_all/install -DCMAKE_CROSS_CONFIGS="all" -DCMAKE_DEFAULT_CONFIGS="all"
# builds both debug and release libraries
$ ninja
$ ninja install
-- Install configuration: "Release"
-- Installing: /home/alex/nmc_install_all/install/lib/liblib.a
$ ninja install:Debug
-- Install configuration: "Debug"
-- Installing: /home/alex/nmc_install_all/install/lib/liblib_debug.a
# or alternatively
$ ninja -f build-Debug.ninja install
-- Install configuration: "Debug"
-- Installing: /home/alex/nmc_install_all/install/lib/liblib_debug.a
$ ninja install:all
ninja: error: unknown target 'install:all'
While -DCMAKE_DEFAULT_CONFIGS="all"
makes sure that the default ninja target builds all configurations, the install target still installs only one configuration.
I think it would be useful (and also consistent) to make the default install targets install for the same configurations as specified in CMAKE_DEFAULT_CONFIGS
.
Additionally as can be seen there is no equivalent install:all
target similar how there is lib:all
or all:all
.
Edited by alcroito