Updated formatting of documentation plus a little reorganization.
[cmake.git] / Tests / Properties / CMakeLists.txt
blobe0c752297cfe07315f0e990ebfa98c888f8f7a61
1 # a simple CXX only test case
2 cmake_minimum_required (VERSION 2.6)
3 project (Properties)
5 # these first three tests really test both properties and the management of 
6 # cmSourceFile objects by CMake. 
8 # test properties on a build tree file that is relative (yuck)
9 configure_file(properties.h.in "${Properties_BINARY_DIR}/properties.h")
10 set_source_files_properties(properties.h PROPERTIES TEST1 1)
11 get_source_file_property(RESULT1 properties.h TEST1)
13 # test properties on a headerfile in the source tree 
14 # accessed without an extenion (also yuck)
15 set_source_files_properties(properties2 PROPERTIES TEST2 1)
16 get_source_file_property(RESULT2 properties2 TEST2)
18 # test properties on a relative source that is not generated
19 set_source_files_properties(SubDir/properties3.cxx PROPERTIES TEST3 1)
20 get_source_file_property(RESULT3 SubDir/properties3.cxx TEST3)
22 include_directories("${Properties_SOURCE_DIR}" "${Properties_BINARY_DIR}")
25 # test generic property interfaces
26 get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST DEFINED)
27 if (GLOBALRESULT)
28     message(SEND_ERROR "Error: global prop defined when it should not be, "
29             "result is GLOBALRESULT=${GLOBALRESULT}")
30 endif (GLOBALRESULT)
32 define_property(GLOBAL PROPERTY GLOBALTEST
33   BRIEF_DOCS "A test property"
34   FULL_DOCS "A long description of this test property"
35   )
37 get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST DEFINED)
38 if (NOT GLOBALRESULT)
39     message(SEND_ERROR "Error: global prop not defined "
40             "result is GLOBALRESULT=${GLOBALRESULT}")
41 endif (NOT GLOBALRESULT)
42   
43 set_property(GLOBAL PROPERTY GLOBALTEST 1)
44 set_property(DIRECTORY PROPERTY DIRECTORYTEST 1)
45 set_property(SOURCE SubDir/properties3.cxx PROPERTY SOURCETEST 1)
46 get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST)
47 get_property(DIRECTORYRESULT DIRECTORY PROPERTY DIRECTORYTEST)
48 get_property(SOURCERESULT
49   SOURCE SubDir/properties3.cxx
50   PROPERTY SOURCETEST
51   )
53 if (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND 
54     DIRECTORYRESULT AND SOURCERESULT)
55   add_executable (Properties SubDir/properties3.cxx properties)
56 else (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND 
57     DIRECTORYRESULT AND SOURCERESULT)
58   message(SEND_ERROR 
59     "Error: test results are RESULT1=${RESULT1} RESULT2=${RESULT2} "
60     "RESULT3=${RESULT3} GLOBALRESULT=${GLOBALRESULT} "
61     "DIRECTORYRESULT=${DIRECTORYRESULT} "
62     "SOURCERESULT=${SOURCERESULT}")
63 endif (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND 
64   DIRECTORYRESULT AND SOURCERESULT)
66 # test the target property
67 set_property(TARGET Properties PROPERTY TARGETTEST 1)
68 get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST)
69 if (NOT TARGETRESULT)
70     message(SEND_ERROR 
71       "Error: target result is TARGETRESULT=${TARGETRESULT}")
72 endif (NOT TARGETRESULT)
74 # test get_property SET
75 get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET)
76 if (NOT TARGETRESULT)
77     message(SEND_ERROR 
78       "Error: target prop not set, result is TARGETRESULT=${TARGETRESULT}")
79 endif (NOT TARGETRESULT)
81 # test unsetting a property
82 set_property(TARGET Properties PROPERTY TARGETTEST)
83 get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET)
84 if (TARGETRESULT)
85     message(SEND_ERROR "Error: target prop not unset, "
86             "result is TARGETRESULT=${TARGETRESULT}")
87 endif (TARGETRESULT)
91 # test the target SOURCES property
92 get_property(Properties_SOURCES TARGET Properties PROPERTY SOURCES)
93 set_source_files_properties(${Properties_SOURCES} PROPERTIES TEST4 1)
94 get_source_file_property(RESULT4 properties.h TEST4)
95 if(NOT RESULT4)
96   message(SEND_ERROR "Error: target result is"
97     " RESULT4=${RESULT4}"
98     " Properties_SOURCES=[${Properties_SOURCES}]")
99 endif(NOT RESULT4)
101 # test CACHE properties
102 macro(check_cache_props)
103   foreach(prop VALUE TYPE HELPSTRING ADVANCED STRINGS)
104     get_property(result CACHE SOME_ENTRY PROPERTY ${prop})
105     if(NOT "x${result}" STREQUAL "x${expect_${prop}}")
106       message(SEND_ERROR "CACHE property ${prop} is [${result}], not [${expect_${prop}}]")
107     endif()
108   endforeach(prop)
109 endmacro(check_cache_props)
110 set(expect_VALUE "ON")
111 set(expect_TYPE "BOOL")
112 set(expect_HELPSTRING "sample cache entry")
113 set(expect_ADVANCED 0)
114 set(expect_STRINGS "")
115 set(SOME_ENTRY "${expect_VALUE}" CACHE ${expect_TYPE} "${expect_HELPSTRING}" FORCE)
116 mark_as_advanced(CLEAR SOME_ENTRY)
117 set_property(CACHE SOME_ENTRY PROPERTY STRINGS "")
118 check_cache_props()
119 set(expect_VALUE "Some string")
120 set(expect_TYPE "STRING")
121 set(expect_HELPSTRING "sample cache entry help")
122 set(expect_ADVANCED 1)
123 set(expect_STRINGS "Some string;Some other string;Some third string")
124 set_property(CACHE SOME_ENTRY PROPERTY TYPE "${expect_TYPE}")
125 set_property(CACHE SOME_ENTRY PROPERTY HELPSTRING "${expect_HELPSTRING}")
126 set_property(CACHE SOME_ENTRY PROPERTY VALUE "${expect_VALUE}")
127 set_property(CACHE SOME_ENTRY PROPERTY ADVANCED "${expect_ADVANCED}")
128 set_property(CACHE SOME_ENTRY PROPERTY STRINGS "${expect_STRINGS}")
129 check_cache_props()