|
|
|
cmake_minimum_required (VERSION 2.6)
|
|
|
|
project(IncludeDirectories)
|
|
|
|
|
|
|
|
file(WRITE ${CMAKE_BINARY_DIR}/Flags/Flags.h
|
|
|
|
"//Flags.h
|
|
|
|
")
|
|
|
|
file(WRITE ${CMAKE_BINARY_DIR}/IncDir/IncDir.h
|
|
|
|
"//IncDir.h
|
|
|
|
")
|
|
|
|
file(WRITE ${CMAKE_BINARY_DIR}/SrcProp/SrcProp.h
|
|
|
|
"//SrcProp.h
|
|
|
|
")
|
|
|
|
file(WRITE ${CMAKE_BINARY_DIR}/TarProp/TarProp.h
|
|
|
|
"//TarProp.h
|
|
|
|
")
|
|
|
|
|
|
|
|
# default to testing with full path
|
|
|
|
# some compilers can not handle the escape for directories
|
|
|
|
# with spaces in them.
|
|
|
|
set(USE_FULLPATH TRUE)
|
|
|
|
if(WATCOM OR MSVC60)
|
|
|
|
set(USE_FULLPATH FALSE)
|
|
|
|
endif()
|
|
|
|
if(USE_FULLPATH)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \"-I${CMAKE_BINARY_DIR}/Flags\"")
|
|
|
|
else()
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -IFlags")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
include_directories(${CMAKE_BINARY_DIR}/IncDir)
|
|
|
|
if(USE_FULLPATH)
|
|
|
|
set_source_files_properties(main.cpp PROPERTIES COMPILE_FLAGS
|
|
|
|
"\"-I${CMAKE_BINARY_DIR}/SrcProp\"")
|
|
|
|
else()
|
|
|
|
set_source_files_properties(main.cpp PROPERTIES COMPILE_FLAGS
|
|
|
|
"-ISrcProp")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_executable(IncludeDirectories main.cpp)
|
|
|
|
|
|
|
|
if(USE_FULLPATH)
|
|
|
|
set_target_properties(IncludeDirectories
|
|
|
|
PROPERTIES COMPILE_FLAGS "\"-I${CMAKE_BINARY_DIR}/TarProp\"")
|
|
|
|
else()
|
|
|
|
set_target_properties(IncludeDirectories
|
|
|
|
PROPERTIES COMPILE_FLAGS "-ITarProp")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_subdirectory(TargetIncludeDirectories)
|
|
|
|
|
|
|
|
set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}")
|
|
|
|
get_property(propContent DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
|
|
|
if (NOT propContent STREQUAL "${CMAKE_BINARY_DIR}")
|
|
|
|
message(SEND_ERROR "Setting DIRECTORY property failed.")
|
|
|
|
endif()
|
|
|
|
set_property(DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
|
|
|
get_property(propContentAfter DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
|
|
|
|
if (NOT propContentAfter STREQUAL "")
|
|
|
|
message(SEND_ERROR "Clearing DIRECTORY property failed.")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_library(empty_entry_test SHARED empty.cpp)
|
|
|
|
set_target_properties(empty_entry_test PROPERTIES INCLUDE_DIRECTORIES "")
|
|
|
|
include_directories(/one/two
|
|
|
|
" "
|
|
|
|
" "
|
|
|
|
)
|
|
|
|
get_target_property(incs empty_entry_test INCLUDE_DIRECTORIES)
|
|
|
|
if (NOT incs STREQUAL ";/one/two")
|
|
|
|
message(SEND_ERROR "Empty include_directories entry was not ignored.")
|
|
|
|
endif()
|