include_directories(${CMAKE_CURRENT_BINARY_DIR}) if ("${PROJECT_SOURCE_DIR}" STREQUAL "${ANOTHER_PROJ_SOURCE_DIR}") set(BUILD_SHARED_LIBS 1) # Construct a source file outside the tree whose full path is close to # the path length limit. This will cause the full path to the object # file in the build tree to exceed the maximum path length which will # test cmLocalGenerator::CreateSafeUniqueObjectFileName. get_filename_component(DEEPDIR ${OutOfSource_BINARY_DIR}/../OutOfSourceDeep/deeper ABSOLUTE) # Test giving the generator a custom limit. set(CMAKE_OBJECT_PATH_MAX 220) # Use a separate variable for computation. set(MAXPATH "${CMAKE_OBJECT_PATH_MAX}") # VS adds "OutOfSource/SubDir/OutOfSourceSubdir/../../../" to the # path of the source file for no good reason. Reduce the length # limit by 46 characters to account for it. It should still be long # enough to require special object file name conversion. if(${CMAKE_GENERATOR} MATCHES "Visual Studio") math(EXPR MAXPATH "${MAXPATH} - 46") endif() # Ninja imposes a maximum path component count of 30. Permit more # path components in the source path. if(${CMAKE_GENERATOR} MATCHES "Ninja") math(EXPR MAXPATH "${MAXPATH} - 44") endif() # MAXPATH less 25 for last /and/deeper/simple.cxx part and small safety math(EXPR MAXPATH "${MAXPATH} - 25") string(LENGTH "${DEEPDIR}" DEEPDIR_LEN) while("${DEEPDIR_LEN}" LESS "${MAXPATH}") set(DEEPDIR ${DEEPDIR}/and/deeper) string(LENGTH "${DEEPDIR}" DEEPDIR_LEN) endwhile() set(DEEPSRC ${DEEPDIR}/simple.cxx) string(LENGTH "${DEEPSRC}" DEEPSRC_LEN) configure_file(simple.cxx.in ${DEEPSRC} COPYONLY) # Watcom WMake seems to have problems with long command lines. Just # disable this part of the test until it is resolved. if(${CMAKE_GENERATOR} MATCHES "Watcom WMake") set(DEEPSRC "") add_definitions(-DNO_DEEPSRC) endif() add_library(testlib testlib.cxx) add_executable (simple simple.cxx ../simple.cxx ${DEEPSRC}) target_link_libraries(simple testlib outlib) endif () # test getting a definition from a subdir set (WEASELS SIZZLING) get_directory_property(incDirs INCLUDE_DIRECTORIES) if(NOT incDirs) message(FATAL_ERROR "get_directory_property(INCLUDE_DIRECTORIES) returned empty list") endif()