46 lines
1.5 KiB
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})
|