Imported Upstream version 2.8.11.2
[platform/upstream/cmake.git] / Tests / CMakeCommands / target_include_directories / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 project(target_include_directories)
4
5 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/privateinclude")
6 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/privateinclude/privateinclude.h" "#define PRIVATEINCLUDE_DEFINE\n")
7
8 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/publicinclude")
9 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/publicinclude/publicinclude.h" "#define PUBLICINCLUDE_DEFINE\n")
10
11 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/interfaceinclude")
12 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/interfaceinclude/interfaceinclude.h" "#define INTERFACEINCLUDE_DEFINE\n")
13
14 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/poison")
15 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/poison/common.h" "#error Should not be included\n")
16
17 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/cure")
18 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cure/common.h" "#define CURE_DEFINE\n")
19
20 add_executable(target_include_directories
21   "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
22 )
23 target_include_directories(target_include_directories
24   PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/privateinclude"
25   PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/publicinclude"
26   INTERFACE "${CMAKE_CURRENT_BINARY_DIR}/interfaceinclude"
27 )
28
29 target_include_directories(target_include_directories
30   PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/poison"
31 )
32 target_include_directories(target_include_directories
33   BEFORE PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:target_include_directories,TYPE>,EXECUTABLE>:${CMAKE_CURRENT_BINARY_DIR}/cure>"
34 )
35
36 # Has no effect because the target type is not SHARED_LIBRARY:
37 target_include_directories(target_include_directories
38   BEFORE PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:target_include_directories,TYPE>,SHARED_LIBRARY>:${CMAKE_CURRENT_BINARY_DIR}/poison>"
39 )
40
41 add_executable(consumer
42   "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
43 )
44
45 target_include_directories(consumer
46   PRIVATE
47     $<TARGET_PROPERTY:target_include_directories,INTERFACE_INCLUDE_DIRECTORIES>
48   relative_dir
49 )