Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
CMake
CMake
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,196
    • Issues 3,196
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 15
    • Merge Requests 15
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • External Wiki
    • External Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • CMake
  • CMakeCMake
  • Issues
  • #20713

Closed
Open
Opened May 15, 2020 by alcroito@alcroito💬Developer

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 May 15, 2020 by alcroito
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
3.17.3
Milestone
3.17.3 (Past due)
Assign milestone
Time tracking
None
Due date
None
Reference: cmake/cmake#20713