mirror of
https://github.com/reactos/CMake.git
synced 2024-12-13 14:27:23 +00:00
790e167718
Each project listed in a .sln must be marked (or not) as part of the "default build" for each configuration. For targets created by the add_custom_target() command we add them to the default build if they are not excluded in some way or if another target depends on them. In the top-level .sln, a custom target is excluded if it is not created with the ALL option to add_custom_target. In subdirectory .sln files, a target may also be excluded if it is not within the directory and is brought into the solution only due to a dependency from another target in the solution. Fix the "IsPartOfDefaultBuild" and "IsDependedOn" methods to check every target to be included in the .sln for a dependency on the custom target. Otherwise transitive dependencies through targets not in the current subdirectory will not be considered. Extend the SubProject test with a custom target to cover this case. Reported-by: William Deurwaarder <William.Deurwaarder@tomtom.com> Reported-by: Dirk Steenpass <dirk.steenpass@gmail.com>
16 lines
520 B
CMake
16 lines
520 B
CMake
cmake_minimum_required (VERSION 2.6)
|
|
project(SubProject)
|
|
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/gen.cxx) # require generation
|
|
add_custom_command(
|
|
OUTPUT gen.cxx
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen.cxx.in
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_CURRENT_SOURCE_DIR}/gen.cxx.in gen.cxx
|
|
)
|
|
add_custom_target(gen DEPENDS gen.cxx)
|
|
add_library(bar bar.cxx)
|
|
target_include_directories(bar PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
|
add_dependencies(bar gen)
|
|
add_executable(car car.cxx)
|
|
add_subdirectory(foo)
|