xls-r-300m-sv-robust / kenlm /cmake /KenLMFunctions.cmake
marinone94's picture
Training in progress, epoch 0
1ce325b
# Helper functions used across the CMake build system
include(CMakeParseArguments)
# Adds a bunch of executables to the build, each depending on the specified
# dependent object files and linking against the specified libraries
function(AddExes)
set(multiValueArgs EXES DEPENDS LIBRARIES)
cmake_parse_arguments(AddExes "" "" "${multiValueArgs}" ${ARGN})
# Iterate through the executable list
foreach(exe ${AddExes_EXES})
# Compile the executable, linking against the requisite dependent object files
add_executable(${exe} ${exe}_main.cc ${AddExes_DEPENDS})
# Link the executable against the supplied libraries
target_link_libraries(${exe} ${AddExes_LIBRARIES})
# Group executables together
set_target_properties(${exe} PROPERTIES FOLDER executables)
# End for loop
endforeach(exe)
# Install the executable files
install(TARGETS ${AddExes_EXES} DESTINATION bin)
endfunction()
# Adds a single test to the build, depending on the specified dependent
# object files, linking against the specified libraries, and with the
# specified command line arguments
function(KenLMAddTest)
cmake_parse_arguments(KenLMAddTest "" "TEST"
"DEPENDS;LIBRARIES;TEST_ARGS" ${ARGN})
# Compile the executable, linking against the requisite dependent object files
add_executable(${KenLMAddTest_TEST}
${KenLMAddTest_TEST}.cc
${KenLMAddTest_DEPENDS})
if (Boost_USE_STATIC_LIBS)
set(DYNLINK_FLAGS)
else()
set(DYNLINK_FLAGS COMPILE_FLAGS -DBOOST_TEST_DYN_LINK)
endif()
# Require the following compile flag
set_target_properties(${KenLMAddTest_TEST} PROPERTIES
${DYNLINK_FLAGS}
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/tests)
target_link_libraries(${KenLMAddTest_TEST} ${KenLMAddTest_LIBRARIES} ${TIMER_LINK})
set(test_params "")
if(KenLMAddTest_TEST_ARGS)
set(test_params ${KenLMAddTest_TEST_ARGS})
endif()
# Specify command arguments for how to run each unit test
add_test(NAME ${KenLMAddTest_TEST}
COMMAND ${KenLMAddTest_TEST} ${test_params})
# Group unit tests together
set_target_properties(${KenLMAddTest_TEST} PROPERTIES FOLDER "unit_tests")
endfunction()
# Adds a bunch of tests to the build, each depending on the specified
# dependent object files and linking against the specified libraries
function(AddTests)
set(multiValueArgs TESTS DEPENDS LIBRARIES TEST_ARGS)
cmake_parse_arguments(AddTests "" "" "${multiValueArgs}" ${ARGN})
# Iterate through the Boost tests list
foreach(test ${AddTests_TESTS})
KenLMAddTest(TEST ${test}
DEPENDS ${AddTests_DEPENDS}
LIBRARIES ${AddTests_LIBRARIES}
TEST_ARGS ${AddTests_TEST_ARGS})
endforeach(test)
endfunction()