Skip to content

Commit c01fa4a

Browse files
committed
[cmake] change outupt directories for the tests
Use `CMAKE_CURRENT_BINARY_DIR` instead of `CMAKE_CURRENT_BINARY_DIR/$<CONFIG>`
1 parent dad0b5c commit c01fa4a

File tree

4 files changed

+28
-54
lines changed

4 files changed

+28
-54
lines changed

cmake/modules/RootMacros.cmake

Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,14 +1851,7 @@ function(ROOT_ADD_GTEST test_suite)
18511851
set(test_exports "/EXPORT:_Init_thread_abort /EXPORT:_Init_thread_epoch \
18521852
/EXPORT:_Init_thread_footer /EXPORT:_Init_thread_header /EXPORT:_tls_index")
18531853
set_property(TARGET ${test_suite} APPEND_STRING PROPERTY LINK_FLAGS ${test_exports})
1854-
if(NOT CMAKE_GENERATOR MATCHES Ninja)
1855-
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
1856-
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
1857-
set_target_properties(${test_suite} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
1858-
set_target_properties(${test_suite} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
1859-
set_target_properties(${test_suite} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
1860-
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
1861-
endif()
1854+
ROOT_SET_OUTPUT_DIRECTORIES(${test_suite})
18621855
endif()
18631856

18641857
if(ARG_WILLFAIL)
@@ -2529,6 +2522,7 @@ macro(ROOTTEST_GENERATE_DICTIONARY dictname)
25292522

25302523
set_target_properties(${targetname_libgen} PROPERTIES ${ROOT_LIBRARY_PROPERTIES})
25312524
set_target_properties(${targetname_libgen} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
2525+
ROOT_SET_OUTPUT_DIRECTORIES(${targetname_libgen})
25322526

25332527
target_link_libraries(${targetname_libgen} ${ROOT_LIBRARIES})
25342528

@@ -2570,16 +2564,6 @@ macro(ROOTTEST_GENERATE_DICTIONARY dictname)
25702564
FIXTURES_REQUIRED ${ARG_FIXTURES_REQUIRED})
25712565
endif()
25722566

2573-
if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
2574-
add_custom_command(TARGET ${targetname_libgen} POST_BUILD
2575-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${dictname}_rdict.pcm
2576-
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${dictname}_rdict.pcm
2577-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${dictname}.dll
2578-
${CMAKE_CURRENT_BINARY_DIR}/${dictname}.dll
2579-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${dictname}.lib
2580-
${CMAKE_CURRENT_BINARY_DIR}/${dictname}.lib)
2581-
endif()
2582-
25832567
endmacro(ROOTTEST_GENERATE_DICTIONARY)
25842568

25852569
#-------------------------------------------------------------------------------
@@ -2631,6 +2615,7 @@ macro(ROOTTEST_GENERATE_REFLEX_DICTIONARY dictionary)
26312615
set_target_properties(${targetname_libgen} PROPERTIES ${ROOT_LIBRARY_PROPERTIES} )
26322616
set_property(TARGET ${targetname_libgen} PROPERTY BUILD_WITH_INSTALL_RPATH OFF) # will never be installed anyway
26332617
set_target_properties(${targetname_libgen} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
2618+
ROOT_SET_OUTPUT_DIRECTORIES(${targetname_libgen})
26342619

26352620
if(ARG_LIBNAME)
26362621
set_target_properties(${targetname_libgen} PROPERTIES PREFIX "")
@@ -2687,18 +2672,6 @@ macro(ROOTTEST_GENERATE_REFLEX_DICTIONARY dictionary)
26872672
FIXTURES_REQUIRED ${ARG_FIXTURES_REQUIRED})
26882673
endif()
26892674

2690-
if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
2691-
if(ARG_LIBNAME)
2692-
add_custom_command(TARGET ${targetname_libgen} POST_BUILD
2693-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${ARG_LIBNAME}.dll
2694-
${CMAKE_CURRENT_BINARY_DIR}/${ARG_LIBNAME}.dll)
2695-
else()
2696-
add_custom_command(TARGET ${targetname_libgen} POST_BUILD
2697-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/lib${dictionary}_dictrflx.dll
2698-
${CMAKE_CURRENT_BINARY_DIR}/lib${dictionary}_dictrflx.dll)
2699-
endif()
2700-
endif()
2701-
27022675
endmacro(ROOTTEST_GENERATE_REFLEX_DICTIONARY)
27032676

27042677
#-------------------------------------------------------------------------------
@@ -3483,26 +3456,38 @@ function(find_python_module module)
34833456
set(PY_${module_upper}_FOUND ${PY_${module_upper}_FOUND} PARENT_SCOPE)
34843457
endfunction()
34853458

3459+
#---------------------------------------------------------------------------------------------------
3460+
# function ROOT_SET_OUTPUT_DIRECTORIES( <name> )
3461+
#
3462+
# this function simply sets the output directories from the standard outupt directory
3463+
# (CMAKE_CURRENT_BINARY_DIR/$<CONFIG>) to its parent directory (CMAKE_CURRENT_BINARY_DIR) on Windows
3464+
#
3465+
#---------------------------------------------------------------------------------------------------
3466+
function(ROOT_SET_OUTPUT_DIRECTORIES library)
3467+
if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
3468+
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
3469+
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
3470+
set_target_properties(${library} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
3471+
set_target_properties(${library} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
3472+
set_target_properties(${library} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_CURRENT_BINARY_DIR})
3473+
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
3474+
endif()
3475+
endfunction()
3476+
34863477
#---------------------------------------------------------------------------------------------------
34873478
# function ROOTTEST_LINKER_LIBRARY( <name> source1 source2 ...[TYPE STATIC|SHARED] [DLLEXPORT]
34883479
# [NOINSTALL] LIBRARIES library1 library2 ...
34893480
# DEPENDENCIES dep1 dep2
34903481
# BUILTINS dep1 dep2)
34913482
#
3492-
# this function simply calls the ROOT function ROOT_LINKER_LIBRARY, and add a POST_BUILD custom
3493-
# command to copy the .dll and .lib from the standard config directory (Debug/Release) to its
3494-
# parent directory (CMAKE_CURRENT_BINARY_DIR) on Windows
3483+
# this function simply calls the ROOT function ROOT_LINKER_LIBRARY, and sets the output directories
3484+
# from the standard output directory (CMAKE_CURRENT_BINARY_DIR/$<CONFIG>) to its parent directory
3485+
# (CMAKE_CURRENT_BINARY_DIR) on Windows
34953486
#
34963487
#---------------------------------------------------------------------------------------------------
34973488
function(ROOTTEST_LINKER_LIBRARY library)
34983489
ROOT_LINKER_LIBRARY(${ARGV})
3499-
if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
3500-
add_custom_command(TARGET ${library} POST_BUILD
3501-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/lib${library}.dll
3502-
${CMAKE_CURRENT_BINARY_DIR}/lib${library}.dll
3503-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/lib${library}.lib
3504-
${CMAKE_CURRENT_BINARY_DIR}/lib${library}.lib)
3505-
endif()
3490+
ROOT_SET_OUTPUT_DIRECTORIES(${library})
35063491
endfunction()
35073492

35083493
#---------------------------------------------------------------------------------------------------

roottest/root/tree/cloning/CMakeLists.txt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22
# FIXME: it will be nice to move roottest-treeformula-event to CMake and add it as dependency
33
# To fix runtime_cxxmodules, we need to use already build artefacts.
44

5-
if(MSVC)
6-
if(CMAKE_GENERATOR MATCHES Ninja)
7-
set(test_bin_dir "${ROOTSYS}/test")
8-
else()
9-
set(test_bin_dir "${ROOTSYS}/test/$<CONFIG>")
10-
endif()
11-
else()
12-
set(test_bin_dir "${CMAKE_BINARY_DIR}/test")
13-
endif()
5+
set(test_bin_dir "${CMAKE_BINARY_DIR}/test")
146

157
ROOTTEST_ADD_TEST(hsimple-create
168
MACRO ${CMAKE_SOURCE_DIR}/tutorials/hsimple.C

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
6565
endif()
6666
endif()
6767
ROOT_EXECUTABLE(eventexe MainEvent.cxx LIBRARIES Event RIO Tree TreePlayer Hist Net)
68+
ROOT_SET_OUTPUT_DIRECTORIES(eventexe)
6869
ROOT_ADD_TEST(test-event COMMAND eventexe)
6970

7071
#---guitest------------------------------------------------------------------------------------

tree/tree/test/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,9 @@ ROOT_GENERATE_DICTIONARY(ElementStructDict ElementStruct.h LINKDEF ElementStruct
99
ROOT_ADD_GTEST(testTOffsetGeneration TOffsetGeneration.cxx ElementStruct.cxx ElementStructDict.cxx
1010
LIBRARIES RIO Tree MathCore
1111
)
12-
if(MSVC AND NOT CMAKE_GENERATOR MATCHES Ninja)
13-
add_custom_command(TARGET testTOffsetGeneration POST_BUILD
14-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libElementStructDict_rdict.pcm
15-
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/libElementStructDict_rdict.pcm)
16-
endif()
1712
target_include_directories(testTOffsetGeneration PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
1813
ROOT_STANDARD_LIBRARY_PACKAGE(SillyStruct NO_INSTALL_HEADERS HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/SillyStruct.h SOURCES SillyStruct.cxx LINKDEF SillyStructLinkDef.h DEPENDENCIES RIO)
14+
ROOT_SET_OUTPUT_DIRECTORIES(SillyStruct)
1915
ROOT_ADD_GTEST(testBulkApi BulkApi.cxx LIBRARIES RIO Tree TreePlayer)
2016
#FIXME: tests are having timeout on 32bit CERN VM (in docker container everything is fine),
2117
# to be reverted after investigation.

0 commit comments

Comments
 (0)