89 lines
2.5 KiB
CMake
89 lines
2.5 KiB
CMake
@PACKAGE_INIT@
|
|
|
|
# Make a list of all configurations
|
|
# FIXME: Replace this with ${CMAKE_CONFIGURATION_TYPES}
|
|
set(CONFIGS "RELEASE" "DEBUG")
|
|
|
|
# Construct the executable names
|
|
set(@TARGET@_OUTPUT_NAME_RELEASE "@OUTPUT_NAME@")
|
|
set(@TARGET@_OUTPUT_NAME_DEBUG "@OUTPUT_NAME@@DEBUG_POSTFIX@")
|
|
|
|
|
|
# See if we can go the easy way when our dependency is also a target to be built
|
|
if (TARGET @TARGET@)
|
|
set(@TARGET@_EXECUTABLE @TARGET@)
|
|
set(@TARGET@_FOUND TRUE)
|
|
endif()
|
|
|
|
# See if the imported target already exists
|
|
if (TARGET @TARGET@_IMPORTED_${TARGET_POSTFIX})
|
|
set(@TARGET@_EXECUTABLE @TARGET@_IMPORTED_${TARGET_POSTFIX})
|
|
set(@TARGET@_FOUND TRUE)
|
|
endif()
|
|
|
|
|
|
# If the project is a target then it might not be built but we assume
|
|
# nevertheless that the files will be present. If it is not a target then
|
|
# we look for the libraries explicitly
|
|
if (NOT @TARGET@_FOUND)
|
|
set(FIND_PATHS "@PACKAGE_LIB_PATH@"
|
|
"@PACKAGE_BIN_PATH@"
|
|
"@PACKAGE_BUILD_BIN_PATH@"
|
|
"@PACKAGE_BUILD_LIB_PATH@")
|
|
|
|
# Try to find executables for all configurations
|
|
foreach(conf ${CONFIGS})
|
|
find_program(@TARGET@_EXE_${conf} ${@TARGET@_OUTPUT_NAME_${conf}} PATHS ${FIND_PATHS})
|
|
endforeach()
|
|
|
|
# Check if all program types could be found
|
|
set(ALL_EXES_FOUND TRUE)
|
|
foreach(conf ${CONFIGS})
|
|
if (NOT @TARGET@_EXE_${conf})
|
|
set(ALL_EXES_FOUND FALSE)
|
|
break()
|
|
endif()
|
|
endforeach()
|
|
|
|
# If some programs could not be found then substitute their name with the
|
|
# first library name that could be found
|
|
if (NOT ALL_EXES_FOUND)
|
|
set(FIRST_FOUND_NAME FALSE)
|
|
|
|
foreach(conf ${CONFIGS})
|
|
if(@TARGET@_EXE_${conf})
|
|
set(FIRST_FOUND_NAME ${@TARGET@_EXE_${conf}})
|
|
break()
|
|
endif()
|
|
endforeach()
|
|
|
|
# If no program was found then we failed
|
|
if (NOT FIRST_FOUND_NAME)
|
|
# FIXME: add better error handling here
|
|
message(FATAL_ERROR "Could not find program @OUTPUT_NAME@")
|
|
set(@TARGET@_FOUND FALSE)
|
|
return()
|
|
endif()
|
|
|
|
# Set all library names that were not found
|
|
foreach(conf ${CONFIGS})
|
|
if(NOT @TARGET@_EXE_${conf})
|
|
set(@TARGET@_EXE_${conf} ${FIRST_FOUND_NAME})
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
# Generate an imported target which each location for different configurations set accordingly
|
|
add_executable(@TARGET@_IMPORTED_${TARGET_POSTFIX} IMPORTED)
|
|
foreach(conf ${CONFIGS})
|
|
set_target_properties(@TARGET@_IMPORTED_${TARGET_POSTFIX} PROPERTIES
|
|
IMPORTED_LOCATION_${conf} "${@TARGET@_EXE_${conf}}")
|
|
endforeach()
|
|
|
|
set(@TARGET@_EXECUTABLE @TARGET@_IMPORTED_${TARGET_POSTFIX})
|
|
set(@TARGET@_FOUND TRUE)
|
|
endif()
|
|
|
|
|
|
@MACRO_DEFINITIONS@
|
|
|