CMakeLists.txt revision 12391:ceeca8b41e4b
1add_custom_target(test_cmake_build) 2 3if(CMAKE_VERSION VERSION_LESS 3.1) 4 # 3.0 needed for interface library for subdirectory_target/installed_target 5 # 3.1 needed for cmake -E env for testing 6 return() 7endif() 8 9include(CMakeParseArguments) 10function(pybind11_add_build_test name) 11 cmake_parse_arguments(ARG "INSTALL" "" "" ${ARGN}) 12 13 set(build_options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/mock_install" 14 "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" 15 "-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}" 16 "-DPYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}") 17 if(NOT ARG_INSTALL) 18 list(APPEND build_options "-DPYBIND11_PROJECT_DIR=${PROJECT_SOURCE_DIR}") 19 endif() 20 21 add_custom_target(test_${name} ${CMAKE_CTEST_COMMAND} 22 --quiet --output-log ${name}.log 23 --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/${name}" 24 "${CMAKE_CURRENT_BINARY_DIR}/${name}" 25 --build-config Release 26 --build-noclean 27 --build-generator ${CMAKE_GENERATOR} 28 $<$<BOOL:${CMAKE_GENERATOR_PLATFORM}>:--build-generator-platform> ${CMAKE_GENERATOR_PLATFORM} 29 --build-makeprogram ${CMAKE_MAKE_PROGRAM} 30 --build-target check 31 --build-options ${build_options} 32 ) 33 if(ARG_INSTALL) 34 add_dependencies(test_${name} mock_install) 35 endif() 36 add_dependencies(test_cmake_build test_${name}) 37endfunction() 38 39pybind11_add_build_test(subdirectory_function) 40pybind11_add_build_test(subdirectory_target) 41if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy") 42 pybind11_add_build_test(subdirectory_embed) 43endif() 44 45if(PYBIND11_INSTALL) 46 add_custom_target(mock_install ${CMAKE_COMMAND} 47 "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/mock_install" 48 -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" 49 ) 50 51 pybind11_add_build_test(installed_function INSTALL) 52 pybind11_add_build_test(installed_target INSTALL) 53 if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy") 54 pybind11_add_build_test(installed_embed INSTALL) 55 endif() 56endif() 57 58add_dependencies(check test_cmake_build) 59