9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
61 lines
2.1 KiB
CMake
61 lines
2.1 KiB
CMake
cmake_minimum_required (VERSION 2.6)
|
|
project(VSExternalInclude)
|
|
|
|
if(${CMAKE_GENERATOR} MATCHES "Visual Studio 6")
|
|
set(PROJECT_EXT dsp)
|
|
else()
|
|
set(PROJECT_EXT vcproj)
|
|
endif()
|
|
if(${CMAKE_GENERATOR} MATCHES "Visual Studio 1[01]")
|
|
set(PROJECT_EXT vcxproj)
|
|
endif()
|
|
|
|
# make sure directories exists
|
|
set(LIB1_BINARY_DIR ${VSExternalInclude_BINARY_DIR}/Lib1)
|
|
make_directory("${LIB1_BINARY_DIR}")
|
|
|
|
set(LIB2_BINARY_DIR ${VSExternalInclude_BINARY_DIR}/Lib2)
|
|
make_directory("${LIB2_BINARY_DIR}")
|
|
|
|
# generate lib1
|
|
exec_program("${CMAKE_COMMAND}" "${LIB1_BINARY_DIR}" ARGS -G\"${CMAKE_GENERATOR}\"
|
|
\"${VSExternalInclude_SOURCE_DIR}/Lib1\" OUTPUT_VARIABLE OUT)
|
|
message("CMAKE Ran with the following output:\n\"${OUT}\"")
|
|
|
|
# generate lib2
|
|
exec_program("${CMAKE_COMMAND}" "${LIB2_BINARY_DIR}" ARGS -G\"${CMAKE_GENERATOR}\"
|
|
\"${VSExternalInclude_SOURCE_DIR}/Lib2\" OUTPUT_VARIABLE OUT)
|
|
message("CMAKE Ran with the following output:\n\"${OUT}\"")
|
|
|
|
|
|
include_external_msproject(lib1 ${VSExternalInclude_BINARY_DIR}/Lib1/LIB1.${PROJECT_EXT})
|
|
# lib2 depends on lib1
|
|
include_external_msproject(lib2 ${VSExternalInclude_BINARY_DIR}/Lib2/LIB2.${PROJECT_EXT} lib1)
|
|
|
|
include_directories(${VSExternalInclude_SOURCE_DIR}/Lib2 ${VSExternalInclude_SOURCE_DIR}/Lib1)
|
|
|
|
set(SOURCES main.cpp)
|
|
|
|
add_executable(VSExternalInclude ${SOURCES})
|
|
|
|
# target depends on lib2
|
|
add_dependencies(VSExternalInclude lib2)
|
|
# VS 10 vcxproj files have depends in them
|
|
# Since lib1 and lib2 do not depend on each other
|
|
# then the vcxproj files do not depend on each other
|
|
# and the sln file can no longer be the only source
|
|
# of that depend. So, for VS 10 make the executable
|
|
# depend on lib1 and lib2
|
|
if(MSVC10 OR MSVC11)
|
|
add_dependencies(VSExternalInclude lib1)
|
|
endif()
|
|
|
|
# Interaction testing between the FOLDER target property and
|
|
# INCLUDE_EXTERNAL_MSPROJECT targets:
|
|
set_target_properties(VSExternalInclude PROPERTIES FOLDER folder1/folder2)
|
|
set_target_properties(lib1 PROPERTIES FOLDER folder1/folder2)
|
|
set_target_properties(lib2 PROPERTIES FOLDER folder1/folder2)
|
|
add_custom_target(EmptyCustomTarget)
|
|
set_target_properties(EmptyCustomTarget PROPERTIES FOLDER folder1/folder2)
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|