| # a simple CXX only test case |
| cmake_minimum_required (VERSION 2.6) |
| project (Properties) |
| |
| # these first three tests really test both properties and the management of |
| # cmSourceFile objects by CMake. |
| |
| # test properties on a build tree file that is relative (yuck) |
| configure_file(properties.h.in "${Properties_BINARY_DIR}/properties.h") |
| set_source_files_properties(properties.h PROPERTIES TEST1 1) |
| get_source_file_property(RESULT1 properties.h TEST1) |
| |
| # test properties on a headerfile in the source tree |
| # accessed without an extenion (also yuck) |
| set_source_files_properties(properties2 PROPERTIES TEST2 1) |
| get_source_file_property(RESULT2 properties2 TEST2) |
| |
| # test properties on a relative source that is not generated |
| set_source_files_properties(SubDir/properties3.cxx PROPERTIES TEST3 1) |
| get_source_file_property(RESULT3 SubDir/properties3.cxx TEST3) |
| |
| include_directories("${Properties_SOURCE_DIR}" "${Properties_BINARY_DIR}") |
| |
| |
| # test generic property interfaces |
| get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST DEFINED) |
| if (GLOBALRESULT) |
| message(SEND_ERROR "Error: global prop defined when it should not be, " |
| "result is GLOBALRESULT=${GLOBALRESULT}") |
| endif (GLOBALRESULT) |
| |
| define_property(GLOBAL PROPERTY GLOBALTEST |
| BRIEF_DOCS "A test property" |
| FULL_DOCS "A long description of this test property" |
| ) |
| |
| get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST DEFINED) |
| if (NOT GLOBALRESULT) |
| message(SEND_ERROR "Error: global prop not defined " |
| "result is GLOBALRESULT=${GLOBALRESULT}") |
| endif (NOT GLOBALRESULT) |
| |
| set_property(GLOBAL PROPERTY GLOBALTEST 1) |
| set_property(DIRECTORY PROPERTY DIRECTORYTEST 1) |
| set_property(SOURCE SubDir/properties3.cxx PROPERTY SOURCETEST 1) |
| get_property(GLOBALRESULT GLOBAL PROPERTY GLOBALTEST) |
| get_property(DIRECTORYRESULT DIRECTORY PROPERTY DIRECTORYTEST) |
| get_property(SOURCERESULT |
| SOURCE SubDir/properties3.cxx |
| PROPERTY SOURCETEST |
| ) |
| |
| if (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND |
| DIRECTORYRESULT AND SOURCERESULT) |
| add_executable (Properties SubDir/properties3.cxx properties) |
| else (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND |
| DIRECTORYRESULT AND SOURCERESULT) |
| message(SEND_ERROR |
| "Error: test results are RESULT1=${RESULT1} RESULT2=${RESULT2} " |
| "RESULT3=${RESULT3} GLOBALRESULT=${GLOBALRESULT} " |
| "DIRECTORYRESULT=${DIRECTORYRESULT} " |
| "SOURCERESULT=${SOURCERESULT}") |
| endif (RESULT1 AND RESULT2 AND RESULT3 AND GLOBALRESULT AND |
| DIRECTORYRESULT AND SOURCERESULT) |
| |
| # test the target property |
| set_property(TARGET Properties PROPERTY TARGETTEST 1) |
| get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST) |
| if (NOT TARGETRESULT) |
| message(SEND_ERROR |
| "Error: target result is TARGETRESULT=${TARGETRESULT}") |
| endif (NOT TARGETRESULT) |
| |
| # test get_property SET |
| get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET) |
| if (NOT TARGETRESULT) |
| message(SEND_ERROR |
| "Error: target prop not set, result is TARGETRESULT=${TARGETRESULT}") |
| endif (NOT TARGETRESULT) |
| |
| # test unsetting a property |
| set_property(TARGET Properties PROPERTY TARGETTEST) |
| get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET) |
| if (TARGETRESULT) |
| message(SEND_ERROR "Error: target prop not unset, " |
| "result is TARGETRESULT=${TARGETRESULT}") |
| endif (TARGETRESULT) |
| |
| |
| |
| # test the target SOURCES property |
| get_property(Properties_SOURCES TARGET Properties PROPERTY SOURCES) |
| set_source_files_properties(${Properties_SOURCES} PROPERTIES TEST4 1) |
| get_source_file_property(RESULT4 properties.h TEST4) |
| if(NOT RESULT4) |
| message(SEND_ERROR "Error: target result is" |
| " RESULT4=${RESULT4}" |
| " Properties_SOURCES=[${Properties_SOURCES}]") |
| endif(NOT RESULT4) |