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,298
    • Issues 3,298
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 10
    • Merge Requests 10
  • 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
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • CMake
  • CMakeCMake
  • Issues
  • #21410

Closed
Open
Created Nov 09, 2020 by Rodrigo Fernandes@rfernandes

Makefile intermediate compiler targets only available when sources in top CMakeLists

The auto generated intermediate compilation Makefile targets .s and .i are only present the target sources are added in the top level CMakeLists.txt.

Example:

CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(TEST C CXX)

FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main ${CMAKE_BINARY_DIR}/main.c)
FILE(WRITE ${CMAKE_BINARY_DIR}/mainxx.cxx "int main(void){return 0;}\n")
ADD_EXECUTABLE(mainxx ${CMAKE_BINARY_DIR}/mainxx.cxx)

Results in:

make help
(...)
... main
... mainxx
... main.o
... main.i
... main.s
... mainxx.o
... mainxx.i
... mainxx.s

However doing the FILE / ADD_EXECUTABLE bits in a subdir's CMakeLists.txt

# Top level CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(TEST C CXX)

ADD_SUBDIRECTORY(sub)
# sub/CMakeLists.txt
FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main ${CMAKE_BINARY_DIR}/main.c)
FILE(WRITE ${CMAKE_BINARY_DIR}/mainxx.cxx "int main(void){return 0;}\n")
ADD_EXECUTABLE(mainxx ${CMAKE_BINARY_DIR}/mainxx.cxx)

results in :

make help
(...)
... main
... mainxx
Edited Nov 09, 2020 by Rodrigo Fernandes
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None