# FdoHelpers.cmake # # Helper macros for FDO macro(use_cxx11) if (CMAKE_VERSION VERSION_LESS "3.1") if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") else (CMAKE_VERSION VERSION_LESS "3.1") set (CMAKE_CXX_STANDARD 11) endif (CMAKE_VERSION VERSION_LESS "3.1") endmacro() macro(install_symlink target linkname component) if (NOT WIN32) # The link target doesn't have to exist at this point in time, the symlink will be valid at install time execute_process(COMMAND ln -sf ${target} ${CMAKE_CURRENT_BINARY_DIR}/${linkname}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${linkname} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${component}) endif (NOT WIN32) endmacro() macro(add_linux_message_catalog catalog messagefile msgprefix) if (NOT WIN32) add_custom_command( OUTPUT "${messagefile}" COMMAND $ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${catalog}.mc ${CMAKE_CURRENT_BINARY_DIR}/${catalog}.msf \"*\" ${msgprefix} COMMAND $ ARGS ${catalog} ${catalog}.msf > ${catalog}.tmp COMMAND gencat ARGS ${FDO_LOCAL_NLS_PATH}/linux/en_US/${catalog}.cat ${catalog}.tmp COMMAND sed ARGS -i "\"/#include/d\"" ${catalog}_msg.h COMMAND sed ARGS -i "/MF_/s/\"\(.*\).cat\"/1_cat/" ${catalog}_msg.h COMMAND mv ${catalog}_msg.h ${messagefile} COMMENT "Generating ${catalog}.h ..." ) add_custom_target( ${catalog} ALL DEPENDS ${messagefile} McToMsf mkcatdefs ) install( FILES ${FDO_LOCAL_NLS_PATH}/linux/en_US/${catalog}.cat DESTINATION nls COMPONENT ${FDO_COMPONENT} ) endif (NOT WIN32) endmacro() # Helper macro to generate a precompiled header # IMPORTANT: If including .rc files to the source file set for any given target # add the .rc files *after* invoking this macro and never before! # TODO/FIXME: Only applicable for MSVC and the Visual Studio generator. If the generator # is Ninja, it will be treated the same as though we're building on Linux (ie. No precompiled # header and the source file is just added to the source file list) macro(msvc_add_precompiled_header PrecompiledHeader PrecompiledSource SourcesVar) if (MSVC AND NOT ${CMAKE_GENERATOR} STREQUAL "Ninja") get_filename_component(PrecompiledBasename ${PrecompiledHeader} NAME_WE) set(PrecompiledBinary "$(IntDir)/${PrecompiledBasename}.pch") set(Sources ${${SourcesVar}}) set_source_files_properties(${PrecompiledSource} PROPERTIES COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\"" OBJECT_OUTPUTS "${PrecompiledBinary}") set_source_files_properties( ${PrecompiledSource} PROPERTIES LANGUAGE CXX ) set_source_files_properties(${Sources} PROPERTIES COMPILE_FLAGS "/Yu\"${PrecompiledHeader}\" /FI\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\"" OBJECT_DEPENDS "${PrecompiledBinary}") list(APPEND ${SourcesVar} ${PrecompiledSource}) endif (MSVC AND NOT ${CMAKE_GENERATOR} STREQUAL "Ninja") # Add precompiled header to SourcesVar list(APPEND ${SourcesVar} ${PrecompiledSource}) endmacro() macro(add_windows_resource_dll catalog rc_name output_target_name) if (MSVC) # NOTE: We could use add_library() for building the resource-only dll, but this doesn't work # correctly with the Ninja generator (only with the VS generator). As a workaround, we can run # the raw commands needed to build a resource-only dll # NOTE2: Message dlls are LoadLibrary()'d by name, so as a result they are exempt from normal # debug dll naming (wiht a "d" suffix) set(msg_target "${CMAKE_CURRENT_BINARY_DIR}/${output_target_name}.dll") set(msg_target_pdb "${CMAKE_CURRENT_BINARY_DIR}/${output_target_name}.pdb") add_custom_command( OUTPUT "${msg_target}" COMMAND ${RC_EXE} -I${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${rc_name}.rc COMMAND ${CMAKE_LINKER} /out:${msg_target} /pdb:${msg_target_pdb} /debug /dll /machine:${FDO_CPU_PLAT} /noentry ${CMAKE_CURRENT_BINARY_DIR}/${rc_name}.res COMMENT "Generating resource dll: ${msg_target}" ) add_custom_target(${catalog} DEPENDS "${msg_target}") add_dependencies(${catalog} ${catalog}Gen) install(FILES ${msg_target} DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" COMPONENT ${component}) install(FILES ${msg_target_pdb} DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" COMPONENT ${component}) #add_library(${catalog} SHARED ${CMAKE_CURRENT_BINARY_DIR}/${catalog}.rc) #add_dependencies(${catalog} ${catalog}Gen) ## This is so resource.h can be included #target_include_directories(${catalog} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) ## Need to specify /NOENTRY for resource-only dlls #set_target_properties(${catalog} PROPERTIES LINK_FLAGS "/NOENTRY") #set_target_properties(${catalog} PROPERTIES OUTPUT_NAME "${target_output_name}") #msvc_target_install_private(${catalog} ${FDO_COMPONENT}) endif(MSVC) endmacro() macro(generate_windows_dll_rc catalog_name dll_comment dll_file_desc dll_internal_name dll_file_name sources_var) set(DLL_COMMENT ${dll_comment}) set(DLL_FILE_DESCRIPTION ${dll_file_desc}) set(DLL_INTERNAL_NAME ${dll_internal_name}) set(DLL_FILE_NAME ${dll_file_name}) configure_file(${CMAKE_MODULE_PATH}/../configs/version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/${catalog_name}.rc @ONLY) message(STATUS "Generated ${catalog_name}.rc for target") if (${sources_var}) list (APPEND ${sources_var} ${CMAKE_CURRENT_BINARY_DIR}/${catalog_name}.rc) message(STATUS "Added ${catalog_name}.rc to sources for target") endif (${sources_var}) endmacro() # Base message resource dll target definition macro macro(add_windows_message_target_with_static catalog src_catalog_name static_catalog_name messagefile inc_rel_path target_output_name) if (MSVC) #file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/${static_catalog_name}.rc DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) set_source_files_properties(${messagefile} PROPERTIES GENERATED true) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${catalog}.rc PROPERTIES GENERATED true) add_custom_command( OUTPUT "${messagefile}" COMMAND ${MC_EXE} -U -h "${CMAKE_CURRENT_BINARY_DIR}/${inc_rel_path}" -r "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/${catalog}.mc" COMMAND copy ${static_catalog_name}.rc+${src_catalog_name}.rc ${catalog}_generated.rc COMMENT "Performing Custom Build Step: Building ${catalog}.h and ${catalog}.rc from ${catalog}.mc" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM ) add_custom_target(${catalog}Gen DEPENDS "${messagefile}") add_windows_resource_dll(${catalog} ${catalog}_generated ${target_output_name}) endif (MSVC) endmacro() # Shortcut version of above macro that assumes ${catalog}Static.rc is present and ${catalog} is the intermediate # catalog name generated by mc.exe macro(add_windows_message_target2 catalog messagefile) if (MSVC) add_windows_message_target_with_static(${catalog} ${catalog} ${catalog}Static ${messagefile} "Inc" ${catalog}) endif (MSVC) endmacro() macro (msvc_use_mbcs) if (MSVC) remove_definitions(-D_SBCS) add_definitions(-D_MBCS) endif (MSVC) endmacro () macro (msvc_use_unicode) if (MSVC) remove_definitions(-D_SBCS) add_definitions(-D_UNICODE -DUNICODE) endif (MSVC) endmacro () macro (FdoTestProviderSetup provider_target target provider_name) if (WIN32) # Get target output name get_target_property(TARGET_OUTPUT_NAME ${provider_target} OUTPUT_NAME) if (TARGET_OUTPUT_NAME STREQUAL "TARGET_OUTPUT_NAME-NOTFOUND") # It means no custom output name was specified, so just use target name set(TARGET_OUTPUT_NAME "${provider_target}") endif() configure_file(${CMAKE_MODULE_PATH}/../configs/CopyProviderDeps.bat.in ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat @ONLY) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat $ $<$:Release>$<$:Debug> VERBATIM) else (WIN32) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ VERBATIM) endif (WIN32) endmacro() macro (FdoTestProviderSetupWithMessage provider_target provider_message target provider_name) if (WIN32) # Get target output name get_target_property(TARGET_OUTPUT_NAME ${provider_target} OUTPUT_NAME) if (TARGET_OUTPUT_NAME STREQUAL "TARGET_OUTPUT_NAME-NOTFOUND") # It means no custom output name was specified, so just use target name set(TARGET_OUTPUT_NAME "${provider_target}") endif() configure_file(${CMAKE_MODULE_PATH}/../configs/CopyProviderDeps.bat.in ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat @ONLY) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Copying ${provider_message} to $" COMMAND ${CMAKE_COMMAND} -E copy ${provider_message} $ COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat $ $<$:Release>$<$:Debug> VERBATIM) else (WIN32) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ VERBATIM) endif (WIN32) endmacro() macro (FdoTestProviderSetupWithMessageAndOverride provider_target provider_message provider_overrides target provider_name) if (WIN32) # Get target output name get_target_property(TARGET_OUTPUT_NAME ${provider_target} OUTPUT_NAME) if (TARGET_OUTPUT_NAME STREQUAL "TARGET_OUTPUT_NAME-NOTFOUND") # It means no custom output name was specified, so just use target name set(TARGET_OUTPUT_NAME "${provider_target}") endif() configure_file(${CMAKE_MODULE_PATH}/../configs/CopyProviderDeps.bat.in ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat @ONLY) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Copying ${provider_message} to $" COMMAND ${CMAKE_COMMAND} -E copy ${provider_message} $ COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_BINARY_DIR}/CopyProviderDeps_${TARGET_OUTPUT_NAME}.bat $ $<$:Release>$<$:Debug> VERBATIM) else (WIN32) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo "[postbuild]: Generating providers.xml for ${provider_target} at $" COMMAND ${CMAKE_COMMAND} -E echo "" > $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${provider_name}" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " OSGeo FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " FDO Provider" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " False" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " ${FDO_VERSION_MAJOR}.${FDO_VERSION_MINOR}.0.0" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " $" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo " " >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E echo "" >> $/providers.xml COMMAND ${CMAKE_COMMAND} -E copy $ $ VERBATIM) endif (WIN32) endmacro() macro (FdoCopyBinaries target) if (WIN32) add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND if exist "$/../Message/FDOMessage.dll" ${CMAKE_COMMAND} -E copy $/../Message/FDOMessage.dll $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND ${CMAKE_COMMAND} -E copy $ $ COMMAND if exist "$/Xalan-C_1_11D.dll" ${CMAKE_COMMAND} -E copy $/Xalan-C_1_11D.dll $ COMMAND if exist "$/XalanMessages_1_11D.dll" ${CMAKE_COMMAND} -E copy $/XalanMessages_1_11D.dll $ COMMAND if exist "$/xerces-c_3_2D.dll" ${CMAKE_COMMAND} -E copy $/xerces-c_3_2D.dll $ COMMAND if exist "$/Xalan-C_1_11.dll" ${CMAKE_COMMAND} -E copy $/Xalan-C_1_11.dll $ COMMAND if exist "$/XalanMessages_1_11.dll" ${CMAKE_COMMAND} -E copy $/XalanMessages_1_11.dll $ COMMAND if exist "$/xerces-c_3_2.dll" ${CMAKE_COMMAND} -E copy $/xerces-c_3_2.dll $) endif (WIN32) endmacro() macro (msvc_target_install_private target component include_pdb) if (MSVC) install(TARGETS ${target} RUNTIME DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" COMPONENT ${component}) if (${include_pdb}) message(STATUS "Will install pdb for: ${target}") install(FILES $ DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" COMPONENT ${component} OPTIONAL) endif (${include_pdb}) endif (MSVC) endmacro() macro (msvc_target_install_public target component include_pdb) if (MSVC) install(TARGETS ${target} EXPORT ${target}Config RUNTIME DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" LIBRARY DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Lib" ARCHIVE DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Lib" COMPONENT ${component}) if (${include_pdb}) message(STATUS "Will install pdb for: ${target}") install(FILES $ DESTINATION "\${CMAKE_INSTALL_CONFIG_NAME}/Bin" COMPONENT ${component} OPTIONAL) endif (${include_pdb}) endif (MSVC) endmacro() macro(msvc_install_target_deps target) if (MSVC) # Get target output name get_target_property(TARGET_OUTPUT_NAME ${target} OUTPUT_NAME) if (TARGET_OUTPUT_NAME STREQUAL "TARGET_OUTPUT_NAME-NOTFOUND") # It means no custom output name was specified, so just use target name set(TARGET_OUTPUT_NAME "${target}") endif() configure_file(${CMAKE_MODULE_PATH}/../configs/CopyDeps.bat.in ${CMAKE_BINARY_DIR}/CopyDeps_${TARGET_OUTPUT_NAME}.bat @ONLY) install(CODE "execute_process(COMMAND \${CMAKE_BINARY_DIR}/CopyDeps_${TARGET_OUTPUT_NAME}.bat \${CMAKE_INSTALL_PREFIX} \${CMAKE_INSTALL_CONFIG_NAME})") endif (MSVC) endmacro() macro(add_unit_test_entry_point sources_var test_suite_name) set(FDO_TEST_SUITE ${test_suite_name}) configure_file(${CMAKE_MODULE_PATH}/../configs/UnitTest_EntryPoint.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/UnitTest_EntryPoint.cpp @ONLY) list(APPEND ${sources_var} ${CMAKE_CURRENT_BINARY_DIR}/UnitTest_EntryPoint.cpp) message(STATUS "Generated and added default entry point source for ${test_suite_name}") endmacro()