WhisperCom/libs/loguru/test/build_and_run.cmake

46 lines
1.5 KiB
CMake

#!/usr/bin/env cmake -P
# for lack of an equivalent of `set -e` in bash
macro(EXEC_CMD_CHECK)
message("running ${ARGN}")
execute_process(COMMAND ${ARGN} RESULT_VARIABLE CMD_RESULT)
if(CMD_RESULT)
message(FATAL_ERROR "Error running ${ARGN}")
endif()
endmacro()
# Read the configuration from the environement
if(NOT DEFINED Configuration AND DEFINED ENV{Configuration})
set(Configuration $ENV{Configuration})
endif()
# to override the default configuration: ex. -DConfiguration=Release
if(DEFINED Configuration)
list(APPEND CMAKE_EXTRA_ARGS "-DCMAKE_BUILD_TYPE=${Configuration}")
set(CMAKE_BUILD_EXTRA_ARGS --config ${Configuration})
set(CTEST_EXTRA_ARGS -C ${Configuration})
endif()
# The generator also, if we have an entry in the envirnoment
if(NOT DEFINED Generator AND DEFINED ENV{Generator})
set(Generator $ENV{Generator})
endif()
# to override the default generator: ex. -DGenerator=Ninja
if(DEFINED Generator)
list(APPEND CMAKE_EXTRA_ARGS "-G${Generator}")
endif()
if(NOT DEFINED BUILD_DIR)
set(BUILD_DIR ${CMAKE_CURRENT_LIST_DIR}/build)
endif()
file(MAKE_DIRECTORY ${BUILD_DIR})
# cd build && cmake .. && cd -
EXEC_CMD_CHECK(${CMAKE_COMMAND} ${CMAKE_EXTRA_ARGS} ${CMAKE_CURRENT_LIST_DIR}
WORKING_DIRECTORY ${BUILD_DIR})
# platform-independent equivalent of `make`
EXEC_CMD_CHECK(${CMAKE_COMMAND} --build ${BUILD_DIR} ${CMAKE_BUILD_EXTRA_ARGS})
EXEC_CMD_CHECK(${CMAKE_CTEST_COMMAND} ${CTEST_EXTRA_ARGS} --output-on-failure
WORKING_DIRECTORY ${BUILD_DIR})