diff --git a/cmake/VisualStudio2013.vcxproj.user.in b/cmake/VisualStudio2013.vcxproj.user.in new file mode 100644 index 0000000000000000000000000000000000000000..76919a4e1b919ae70a8ceb454ebfe9ec8e5eebf6 --- /dev/null +++ b/cmake/VisualStudio2013.vcxproj.user.in @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <LocalDebuggerEnvironment>PATH=@_DLL_PATH_DEBUG@;%PATH%</LocalDebuggerEnvironment> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LocalDebuggerEnvironment>PATH=@_DLL_PATH_RELEASE@;%PATH%</LocalDebuggerEnvironment> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'"> + <LocalDebuggerEnvironment>PATH=@_DLL_PATH_RELEASE@;%PATH%</LocalDebuggerEnvironment> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'"> + <LocalDebuggerEnvironment>PATH=@_DLL_PATH_RELEASE@;%PATH%</LocalDebuggerEnvironment> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> +</Project> diff --git a/cmake/catch.cmake b/cmake/catch.cmake index 06791db85894e341ce836707185577f462f32fbb..95c73438c2b9c42fa85260b696350357a39ac15e 100644 --- a/cmake/catch.cmake +++ b/cmake/catch.cmake @@ -25,8 +25,20 @@ include(WarningLevels) set_property(GLOBAL PROPERTY USE_FOLDERS ON) +function(CONFIGURE_MSVC_USERFILE TARGET_NAME PATH_TO_ADD) + file(TO_NATIVE_PATH "${PATH_TO_ADD}/Release" _DLL_PATH_RELEASE) + file(TO_NATIVE_PATH "${PATH_TO_ADD}/Debug" _DLL_PATH_DEBUG) + set(SOURCE_USER_FILE + "${CMAKE_SOURCE_DIR}/cmake/VisualStudio2013.vcxproj.user.in") + set(DESTINATION_USER_FILE + "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.vcxproj.user") + message("DESTINATION_USER_FILE: ${DESTINATION_USER_FILE}") + configure_file(${SOURCE_USER_FILE} ${DESTINATION_USER_FILE} @ONLY) +endfunction() + + function(ADD_TEST_CATCH_INTERNAL_ - NAME SOURCES HEADERS INCLUDE_DIRECTORIES LINK_LIBRARIES) + NAME SOURCES HEADERS INCLUDE_DIRECTORIES LINK_LIBRARIES PATH_TO_ADD) add_executable(${NAME} ${SOURCES} ${HEADERS}) target_include_directories(${NAME} PRIVATE ${INCLUDE_DIRECTORIES}) target_link_libraries(${NAME} ${LINK_LIBRARIES}) @@ -35,6 +47,10 @@ function(ADD_TEST_CATCH_INTERNAL_ set_property(TARGET ${NAME} PROPERTY FOLDER "Tests") source_group("Sources" FILES ${SOURCES} ${HEADERS}) + + if(WIN32 AND MSVC) + configure_msvc_userfile(${NAME} ${PATH_TO_ADD}) + endif() endfunction() @@ -51,7 +67,8 @@ function(ADD_TEST_CATCH) # parse arguments set(options ) set(oneValueArgs NAME CATCH_MAIN) - set(multiValueArgs SOURCES HEADERS INCLUDE_DIRECTORIES LINK_LIBRARIES) + set(multiValueArgs + SOURCES HEADERS INCLUDE_DIRECTORIES LINK_LIBRARIES PATH_TO_ADD) cmake_parse_arguments(ADD_TEST_CATCH "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -69,7 +86,9 @@ function(ADD_TEST_CATCH) "${ADD_TEST_CATCH_SOURCES}" "${ADD_TEST_CATCH_HEADERS}" "${ADD_TEST_CATCH_INCLUDE_DIRECTORIES}" - "${ADD_TEST_CATCH_LINK_LIBRARIES};${ADD_TEST_CATCH_NAME}_catch_main") + "${ADD_TEST_CATCH_LINK_LIBRARIES};${ADD_TEST_CATCH_NAME}_catch_main" + "${ADD_TEST_CATCH_PATH_TO_ADD}" + ) # add test for each test source file foreach(TEST_SOURCE_FILE ${ADD_TEST_CATCH_SOURCES}) @@ -78,6 +97,8 @@ function(ADD_TEST_CATCH) "${TEST_SOURCE_FILE}" "" "${ADD_TEST_CATCH_INCLUDE_DIRECTORIES}" - "${ADD_TEST_CATCH_LINK_LIBRARIES};${ADD_TEST_CATCH_NAME}_catch_main") + "${ADD_TEST_CATCH_LINK_LIBRARIES};${ADD_TEST_CATCH_NAME}_catch_main" + "${ADD_TEST_CATCH_PATH_TO_ADD}" + ) endforeach() endfunction() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 84939b4501920219135dbb8b6be3324fdc920cea..4d14ba5e0926e8df2ab46614856ef05cd9c7d16e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -28,6 +28,7 @@ add_test_catch(NAME "phoenix-tests" CATCH_MAIN src/tests.cpp INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} phoenix LINK_LIBRARIES phoenix + PATH_TO_ADD ${PROJECT_BINARY_DIR}/library ) add_test_cpplint(NAME "phoenix-tests--cpplint" ${PHOENIX_TEST_SOURCES}