Skip to content
Snippets Groups Projects
Commit ddace814 authored by Martin Christoph Hierholzer's avatar Martin Christoph Hierholzer
Browse files

Merge remote-tracking branch 'project-template/master'

parents a75e846c 134a3816
No related branches found
No related tags found
No related merge requests found
...@@ -12,13 +12,18 @@ include(CMakeParseArguments) ...@@ -12,13 +12,18 @@ include(CMakeParseArguments)
# INCLUDE_DIRECTORIES # INCLUDE_DIRECTORIES
# ${list_of_include_directories} # ${list_of_include_directories}
# COMPILE_OPTIONS # COMPILE_OPTIONS
# ${list_of_compile_options}) # ${list_of_compile_options}
# WORKING_DIRECTORY
# ${ctest_working_directory})
# #
# Function registers tests defined as a list of souce files. Test # Function registers tests defined as a list of souce files. Test
# defined by file source_name.cc in the SOURCES list is registered under # defined by file source_name.cc in the SOURCES list is registered under
# the name # the name
# test_namespace.source_name # test_namespace.source_name
# #
# If provided, test executables will use ${ctest_working_directory}
# as the working directory
#
# Provided list of dependent link targets and include directories are # Provided list of dependent link targets and include directories are
# used as PRIVATE dependencies during compilation of test executable. # used as PRIVATE dependencies during compilation of test executable.
# #
...@@ -27,7 +32,7 @@ include(CMakeParseArguments) ...@@ -27,7 +32,7 @@ include(CMakeParseArguments)
function(register_tests) function(register_tests)
find_package(Boost COMPONENTS unit_test_framework REQUIRED) find_package(Boost COMPONENTS unit_test_framework REQUIRED)
list(APPEND single_parmeter_keywords NAMESPACE) list(APPEND single_parmeter_keywords NAMESPACE WORKING_DIRECTORY)
list(APPEND multi_parmeter_keywords SOURCES list(APPEND multi_parmeter_keywords SOURCES
LINK_LIBRARIES LINK_LIBRARIES
INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES
...@@ -37,7 +42,8 @@ function(register_tests) ...@@ -37,7 +42,8 @@ function(register_tests)
register_exe(SOURCES "${arg_SOURCES}" register_exe(SOURCES "${arg_SOURCES}"
NAMESPACE "${arg_NAMESPACE}") NAMESPACE "${arg_NAMESPACE}"
WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}")
get_test_targets(list_of_targets "${arg_SOURCES}") get_test_targets(list_of_targets "${arg_SOURCES}")
...@@ -92,7 +98,7 @@ endfunction() ...@@ -92,7 +98,7 @@ endfunction()
###################################### ######################################
function(register_exe) function(register_exe)
list(APPEND single_value_keywords NAMESPACE) list(APPEND single_value_keywords NAMESPACE WORKING_DIRECTORY)
list(APPEND multi_value_keywords SOURCES) list(APPEND multi_value_keywords SOURCES)
cmake_parse_arguments("arg" "" "${single_value_keywords}" cmake_parse_arguments("arg" "" "${single_value_keywords}"
...@@ -105,9 +111,12 @@ function(register_exe) ...@@ -105,9 +111,12 @@ function(register_exe)
# COMMAND ${target_name} # COMMAND ${target_name}
# WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tests) # WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tests)
# #
add_test(${arg_NAMESPACE}.${target_name} add_test(NAME
${target_name} ${arg_NAMESPACE}.${target_name}
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tests) COMMAND
${target_name}
WORKING_DIRECTORY
${arg_WORKING_DIRECTORY})
endforeach() endforeach()
endfunction() endfunction()
......
...@@ -44,9 +44,11 @@ endforeach() ...@@ -44,9 +44,11 @@ endforeach()
string(REPLACE " " ";" LIST "${PROJECT_NAME} ${${PROJECT_NAME}_LIBRARIES}") string(REPLACE " " ";" LIST "${PROJECT_NAME} ${${PROJECT_NAME}_LIBRARIES}")
foreach(LIBRARY ${LIST}) foreach(LIBRARY ${LIST})
if(LIBRARY MATCHES "/") # library name contains slashes: link against the a file path name if(LIBRARY MATCHES "/") # library name contains slashes: link against the a file path name
set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} ${LIBRARY}") set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} ${LIBRARY}")
else() # library name does not contain slashes: link against library with -l option elseif(LIBRARY MATCHES "^-l") # library name does not contain slashes but already the -l option: directly quote it
set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} ${LIBRARY}")
else() # link against library with -l option
set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} -l${LIBRARY}") set(${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE "${${PROJECT_NAME}_LINKER_FLAGS_MAKEFILE} -l${LIBRARY}")
endif() endif()
endforeach() endforeach()
......
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment