diff --git a/CMakeLists.txt b/CMakeLists.txt index 02a1c606..45de300f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,13 +24,6 @@ cmake_minimum_required(VERSION 3.5.0) project(sol2 VERSION 2.19.0 LANGUAGES CXX C) -if (MSVC) - add_definitions(/DUNICODE /D_UNICODE /D_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING /D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING) - add_compile_options(/W4 /EHsc) -else() - add_compile_options(-Wno-unknown-warning -Wno-unknown-warning-option -Wall -Wextra -Wpedantic -pedantic -pedantic-errors -Wno-noexcept-type -ftemplate-depth=1024) -endif() - # # # General Project Requirements # Set general standard requirements here set(CMAKE_CXX_STANDARD 14) @@ -57,6 +50,28 @@ set(CXX_FEATURES cxx_variadic_macros cxx_variadic_templates) +# # # General project flags +if (MSVC) + add_definitions(/DUNICODE /D_UNICODE /D_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING /D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING) + add_compile_options(/W4 /EHsc) +else() + add_compile_options(-Wno-unknown-warning -Wno-unknown-warning-option -Wall -Wextra -Wpedantic -pedantic -pedantic-errors -Wno-noexcept-type -ftemplate-depth=1024) +endif() + +# # # General project output locations +if (CMAKE_SIZEOF_VOID_P EQUAL 4) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/x86") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/x86") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/x86") +else() + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/x64") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/x64") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/x64") +endif() + +# # # Modules +# # Include modules useful to the project, whether locally made in our own cmake DIRECTORY +# # our from the standard cmake libraries # Add home-rolled modules path to front of module path list set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" "${CMAKE_MODULE_PATH}") @@ -132,22 +147,23 @@ set(SOL2_SINGLE_HEADER_FOUND FALSE) if (PYTHONINTERP_FOUND) if (SINGLE) set(SOL2_SINGLE_FOUND TRUE) - add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/single/sol/sol_forward.hpp" - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/single.py" --output "${CMAKE_BINARY_DIR}/single/sol/sol.hpp" + add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/include/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/include/single/sol/sol_forward.hpp" + COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/single.py" --output "${CMAKE_BINARY_DIR}/include/single/sol/sol.hpp" DEPENDS ${SOL2_HEADER_SOURCES}) add_custom_target(sol2_single_header - DEPENDS "${CMAKE_BINARY_DIR}/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/single/sol/sol_forward.hpp") + DEPENDS "${CMAKE_BINARY_DIR}/include/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/include/single/sol/sol_forward.hpp") set_target_properties(sol2_single_header PROPERTIES - INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}/single/sol") - install(FILES "${CMAKE_BINARY_DIR}/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/single/sol/sol_forward.hpp" + INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}/include/single/sol" + INTERFACE_INCLUDE_DIRECOTIRES "${CMAKE_BINARY_DIR}/include/single/sol") + install(FILES "${CMAKE_BINARY_DIR}/include/single/sol/sol.hpp" "${CMAKE_BINARY_DIR}/include/single/sol/sol_forward.hpp" DESTINATION include/sol) endif() if (DOCS) set(SOL2_DOCS_FOUND TRUE) add_custom_command(OUTPUT documentation COMMAND "make html" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docs) add_custom_target(docs DEPENDS documentation) - install(DIRECTORY "${CMAKE_SOURCE_DIR}/docs/build/html" DESTINATION bin/docs) + install(DIRECTORY "${CMAKE_SOURCE_DIR}/docs/build/html" DESTINATION docs) endif() else() if (SINGLE) @@ -156,7 +172,6 @@ else() endif() if (DOCS) set(SOL2_DOCS_FOUND FALSE) - message(STATUS "documentation cannot be generated as python 3 has not been found.") endif() endif() diff --git a/appveyor.yml b/appveyor.yml index 31a9b0c0..7acca98d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -60,8 +60,8 @@ before_build: - cmake .. -G "%CMAKE_GENERATOR%" -DLUA_VERSION="%LUA_VERSION%" -DBUILD_LUA=ON -DBUILD_LUA_AS_DLL=OFF -DTESTS=ON -DEXAMPLES=ON -DSINGLE=ON -DTESTS_EXAMPLES=ON -DTESTS_SINGLE=ON build_script: -- cmake --build --config Debug . -- cmake --build --config Release . +- cmake --build . --config Debug +- cmake --build . --config Release test_script: - ctest -C Debug --output-on-failure @@ -69,8 +69,12 @@ test_script: notifications: - provider: Webhook - url: https://webhooks.gitter.im/e/a66a71642a00d2e50d2e + url: https://webhooks.gitter.im/e/1af10e654a918bef7f1e method: POST - on_build_success: true - on_build_failure: true + on_build_success: false + on_build_failure: false + on_build_status_changed: true +- provider: Email + on_build_success: false + on_build_failure: false on_build_status_changed: true diff --git a/cmake/Modules/LuaBuild.cmake b/cmake/Modules/LuaBuild.cmake index ed6b8dac..b903b688 100644 --- a/cmake/Modules/LuaBuild.cmake +++ b/cmake/Modules/LuaBuild.cmake @@ -35,7 +35,7 @@ else() set(LUA_BUILD_LIBNAME lua-${LUA_VERSION}) endif() set(LUA_BUILD_TOPLEVEL "${CMAKE_BINARY_DIR}/vendor/${LUA_BUILD_LIBNAME}") -set(LUA_BUILD_INSTALL_DIR "${LUA_BUILD_TOPLEVEL}/install") +set(LUA_BUILD_INSTALL_DIR "${LUA_BUILD_TOPLEVEL}") # # Misc needed variables set(LUA_BUILD_LIBRARY_DESCRIPTION "The base name of the library to build either the static or the dynamic library") @@ -50,10 +50,9 @@ endif() # # # Options -set(LUA_INCLUDE_PREFIX "${LUA_BUILD_INSTALL_DIR}" CACHE PATH "Directory that prefixes the Lua include directory") -set(LUA_INCLUDE_DIR "${LUA_INCLUDE_PREFIX}/include" CACHE PATH "Directory with lua include files") -set(LUA_LIB_DIR "${LUA_BUILD_INSTALL_DIR}/lib" CACHE PATH "Directory with lua library files") -set(LUA_BIN_DIR "${LUA_BUILD_INSTALL_DIR}/bin" CACHE PATH "Directory with lua executable and dynamic library files") +set(LUA_INCLUDE_DIR "${LUA_BUILD_INSTALL_DIR}/include" CACHE PATH "Directory with lua include files") +set(LUA_LIB_DIR "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" CACHE PATH "Directory with lua library files") +set(LUA_BIN_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" CACHE PATH "Directory with lua executable and dynamic library files") option(BUILD_LUA_AS_DLL ${LUA_BUILD_BUILD_DLL_DEFAULT} "Build Lua or LuaJIT as a Shared/Dynamic Link Library") STRING(TOLOWER ${LUA_BUILD_LIBNAME} LUA_BUILD_NORMALIZED_LIBNAME) diff --git a/cmake/Modules/LuaJITBuild.cmake b/cmake/Modules/LuaJITBuild.cmake index c7ba136c..a22c3cb2 100644 --- a/cmake/Modules/LuaJITBuild.cmake +++ b/cmake/Modules/LuaJITBuild.cmake @@ -183,64 +183,3 @@ else () # set externally-visible target indicator set(LUA_LIBRARIES lualib_${LUA_JIT_VERSION}) endif() - -# Cleanup variables we set -unset(LUA_JIT_NORMALIZED_LUA_VERSION) -unset(LUA_JIT_MD5) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta3.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta3.zip) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta2.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta2.zip) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta1.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.1.0-beta1.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.5.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.5.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.4.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.4.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.3.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.3.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.2.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.2.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.1.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.1.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta11.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta11.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta10.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta10.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta9.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta9.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta8.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta8.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta7.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta7.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta6.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta6.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta5.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta5.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta4.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta4.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta3.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta3.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta2.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta2.zip) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta1.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-2.0.0-beta1.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.8.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.8.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.7.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.7.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.6.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.6.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.5.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.5.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.4.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.4.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.3.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.3.zip) -unset(LUA_JIT_MD5_LuaJIT-1.1.2.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.1.0.tar.gz) -unset(LUA_JIT_MD5_LuaJIT-1.0.3.tar.gz) -unset(LUA_JIT_EXTERNAL_2.0_LATEST) -unset(LUA_JIT_EXTERNAL_2.1_LATEST) diff --git a/cmake/Modules/LuaVanillaBuild.cmake b/cmake/Modules/LuaVanillaBuild.cmake index 4c02400f..e684ad9d 100644 --- a/cmake/Modules/LuaVanillaBuild.cmake +++ b/cmake/Modules/LuaVanillaBuild.cmake @@ -340,7 +340,7 @@ if (LUA_VANILLA_BUILD_DIRECTLY) POSITION_INDEPENDENT_CODE TRUE INCLUDE_DIRECTORIES ${LUA_VANILLA_SOURCE_DIR} RUNTIME_OUTPUT_DIRECTORY ${LUA_BIN_DIR} - LIBRARY_OUTPUT_DIRECTORY ${LUA_LIB_DIR} + LIBRARY_OUTPUT_DIRECTORY ${LUA_BIN_DIR} ARCHIVE_OUTPUT_DIRECTORY ${LUA_LIB_DIR} OUTPUT_NAME ${LUA_BUILD_LIBNAME} RUNTIME_OUTPUT_NAME ${LUA_BUILD_LIBNAME} @@ -460,79 +460,3 @@ else () endif() set(LUA_FOUND TRUE) - -unset(LUA_VANILLA_5.1_LATEST) -unset(LUA_VANILLA_5.2_LATEST) -unset(LUA_VANILLA_5.3_LATEST) -unset(LUA_VANILLA_MD5) -unset(LUA_VANILLA_SHA1) -unset(LUA_VANILLA_MD5_5.3.4) -unset(LUA_VANILLA_SHA1_5.3.4) -unset(LUA_VANILLA_MD5_5.3.3) -unset(LUA_VANILLA_SHA1_5.3.3) -unset(LUA_VANILLA_MD5_5.3.2) -unset(LUA_VANILLA_SHA1_5.3.2) -unset(LUA_VANILLA_MD5_5.3.1) -unset(LUA_VANILLA_SHA1_5.3.1) -unset(LUA_VANILLA_MD5_5.3.0) -unset(LUA_VANILLA_SHA1_5.3.0) -unset(LUA_VANILLA_MD5_5.2.4) -unset(LUA_VANILLA_SHA1_5.2.4) -unset(LUA_VANILLA_MD5_5.2.3) -unset(LUA_VANILLA_SHA1_5.2.3) -unset(LUA_VANILLA_MD5_5.2.2) -unset(LUA_VANILLA_SHA1_5.2.2) -unset(LUA_VANILLA_MD5_5.2.1) -unset(LUA_VANILLA_SHA1_5.2.1) -unset(LUA_VANILLA_MD5_5.2.0) -unset(LUA_VANILLA_SHA1_5.2.0) -unset(LUA_VANILLA_MD5_5.1.5) -unset(LUA_VANILLA_SHA1_5.1.5) -unset(LUA_VANILLA_MD5_5.1.4) -unset(LUA_VANILLA_SHA1_5.1.4) -unset(LUA_VANILLA_MD5_5.1.3) -unset(LUA_VANILLA_SHA1_5.1.3) -unset(LUA_VANILLA_MD5_5.1.2) -unset(LUA_VANILLA_SHA1_5.1.2) -unset(LUA_VANILLA_MD5_5.1.1) -unset(LUA_VANILLA_SHA1_5.1.1) -unset(LUA_VANILLA_MD5_5.1) -unset(LUA_VANILLA_SHA1_5.1) -unset(LUA_VANILLA_MD5_5.0.3) -unset(LUA_VANILLA_SHA1_5.0.3) -unset(LUA_VANILLA_MD5_5.0.2) -unset(LUA_VANILLA_SHA1_5.0.2) -unset(LUA_VANILLA_MD5_5.0.1) -unset(LUA_VANILLA_SHA1_5.0.1) -unset(LUA_VANILLA_MD5_5.0) -unset(LUA_VANILLA_SHA1_5.0) -unset(LUA_VANILLA_MD5_4.0.1) -unset(LUA_VANILLA_SHA1_4.0.1) -unset(LUA_VANILLA_MD5_4.0) -unset(LUA_VANILLA_SHA1_4.0) -unset(LUA_VANILLA_MD5_3.2.2) -unset(LUA_VANILLA_SHA1_3.2.2) -unset(LUA_VANILLA_MD5_3.2.1) -unset(LUA_VANILLA_SHA1_3.2.1) -unset(LUA_VANILLA_MD5_3.2) -unset(LUA_VANILLA_SHA1_3.2) -unset(LUA_VANILLA_MD5_3.1) -unset(LUA_VANILLA_SHA1_3.1) -unset(LUA_VANILLA_MD5_3.0) -unset(LUA_VANILLA_SHA1_3.0) -unset(LUA_VANILLA_MD5_2.5) -unset(LUA_VANILLA_SHA1_2.5) -unset(LUA_VANILLA_MD5_2.4) -unset(LUA_VANILLA_SHA1_2.4) -unset(LUA_VANILLA_MD5_2.2) -unset(LUA_VANILLA_SHA1_2.2) -unset(LUA_VANILLA_MD5_2.1) -unset(LUA_VANILLA_SHA1_2.1) -unset(LUA_VANILLA_MD5_1.1) -unset(LUA_VANILLA_SHA1_1.1) -unset(LUA_VANILLA_MD5_1.0) -unset(LUA_VANILLA_SHA1_1.0) -unset(LUA_VANILLA_LIB_FILE) -unset(LUA_VANILLA_BUILD_COMMAND) -unset(LUA_VANILLA_TEST_COMMAND) -unset(LUA_VANILLA_INSTALL_COMMAND) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 9da842f0..da036ffd 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -34,19 +34,24 @@ function (MAKE_EXAMPLE example_source_file is_single) get_filename_component(example_name ${example_source_file} NAME_WE) file(RELATIVE_PATH example_source_file_relative ${CMAKE_SOURCE_DIR} ${example_source_file}) get_filename_component(example_output_relative_dir ${example_source_file_relative} DIRECTORY) + file(TO_CMAKE_PATH "${example_output_relative_dir}" example_output_relative_dir_name) + STRING(REGEX REPLACE "/" "." example_output_relative_dir_name "${example_output_relative_dir}") if (is_single) set(example_name "${example_name}.single") endif() + if (example_output_relative_dir_name STREQUAL "") + set(example_output_name "${example_name}") + else() + set(example_output_name "${example_output_relative_dir_name}.${example_name}") + endif() add_executable(${example_name} ${example_source_file} ${header_files}) set_target_properties(${example_name} PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${example_output_relative_dir}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/${example_output_relative_dir}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/${example_output_relative_dir}") + OUTPUT_NAME "${example_output_name}") if (is_single) target_include_directories(${example_name} - PRIVATE "${CMAKE_BINARY_DIR}/single/sol" "${LUA_INCLUDE_DIR}") + PRIVATE "${CMAKE_BINARY_DIR}/include/single/sol" "${LUA_INCLUDE_DIR}") add_dependencies(${example_name} sol2_single_header) else() target_include_directories(${example_name} @@ -66,10 +71,10 @@ function (MAKE_EXAMPLE example_source_file is_single) if (TESTS_EXAMPLES) if ((NOT is_single) OR (is_single AND TESTS_SINGLE)) - add_test(NAME ${example_name} COMMAND ${example_name}) + add_test(NAME ${example_output_name} COMMAND ${example_name}) endif() endif() - install(TARGETS ${example_name} RUNTIME DESTINATION "${example_output_relative_dir}/${example_name}") + install(TARGETS ${example_name} RUNTIME DESTINATION bin) endfunction(MAKE_EXAMPLE) foreach(example_source_file ${EXAMPLES_SRC}) diff --git a/examples/usertype.cpp b/examples/usertype.cpp index 3aea33fb..91073697 100644 --- a/examples/usertype.cpp +++ b/examples/usertype.cpp @@ -16,7 +16,7 @@ public: } int test(int x) { - return name.length() + x; + return static_cast(name.length() + x); } }; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5b5d7a43..8797da68 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -34,15 +34,10 @@ function(CREATE_TEST test_target_name test_name is_single) set(header_files ${SOL2_HEADER_SOURCES}) endif() add_executable(${test_target_name} ${SOL2_TEST_SOURCES} ${header_files}) - set_target_properties(${test_target_name} - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/tests" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/tests" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/tests") if (is_single) add_dependencies(${test_target_name} sol2_single_header ${lualib}) target_include_directories(${test_target_name} - PRIVATE "${CMAKE_BINARY_DIR}/single/sol" "${LUA_INCLUDE_DIR}" "${CMAKE_BINARY_DIR}/Catch/include/") + PRIVATE "${CMAKE_BINARY_DIR}/include/single/sol" "${LUA_INCLUDE_DIR}" "${CMAKE_BINARY_DIR}/Catch/include/") else() target_include_directories(${test_target_name} PRIVATE "${CMAKE_SOURCE_DIR}" "${LUA_INCLUDE_DIR}" "${CMAKE_BINARY_DIR}/Catch/include/") @@ -57,10 +52,8 @@ function(CREATE_TEST test_target_name test_name is_single) target_link_libraries(${test_target_name} Threads::Threads ${LUA_LIBRARIES} ${CMAKE_DL_LIBS}) - add_test(NAME ${test_target_name} - COMMAND ${test_target_name}) - install(TARGETS ${test_target_name} - RUNTIME DESTINATION bin) + add_test(NAME ${test_target_name} COMMAND ${test_target_name}) + install(TARGETS ${test_target_name} RUNTIME DESTINATION bin) endfunction(CREATE_TEST) CREATE_TEST(tests "tests" FALSE)