diff --git a/CMakeLists.txt b/CMakeLists.txt index c8f1e025..240f3b73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,19 +8,23 @@ include_directories(.) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" "${CMAKE_MODULE_PATH}") -set(LUA_VERSION "5.3" CACHE STRING "The version of Lua needed (5.1, 5.2, 5.3, luaJIT)") +set(LUA_VERSION "5.3" CACHE STRING "The version of Lua needed (5.1, 5.2, 5.3, LuaJIT)") +string(TOLOWER ${LUA_VERSION} LUA_VERSION) if (LUA_VERSION MATCHES "5.1") find_package(Lua 5.1 EXACT REQUIRED) elseif(LUA_VERSION MATCHES "5.2") find_package(Lua 5.2 EXACT REQUIRED) elseif(LUA_VERSION MATCHES "5.3") find_package(Lua 5.3 EXACT REQUIRED) -elseif(LUA_VERSION MATCHES "LuaJIT") +elseif(LUA_VERSION MATCHES "luajit") find_package(LuaJIT REQUIRED) else() message(FATAL_ERROR "${LUA_VERSION} is not a supported version for lua.") endif() +option(TESTS "Enable build of tests" ON) +option(EXAMPLES "Enable build of examples" ON) + include_directories(${LUA_INCLUDE_DIR}) # Features a C++ compiler must have to be used to compile sol2 @@ -46,31 +50,36 @@ set(CXX_FEATURES cxx_auto_type file(GLOB HEADER_SRCS sol/*.hpp) set(HEADER_SRCS sol.hpp ${HEADER_SRCS}) +source_group(headers FILES ${HEADER_SRCS}) if (NOT MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning -Wno-unknown-warning-option -Wall -Wextra -Wpedantic -pedantic -pedantic-errors -Wno-noexcept-type -ftemplate-depth=1024") endif() -file(GLOB EXAMPLES_SRC examples/*.cpp) -source_group(examples FILES ${EXAMPLES_SRC}) -foreach(example_source_file ${EXAMPLES_SRC}) - get_filename_component(example_name ${example_source_file} NAME_WE) - set(example_name "example-${example_name}") - add_executable(${example_name} ${example_source_file} ${HEADER_SRCS}) - target_link_libraries(${example_name} ${LUA_LIBRARIES}) - target_compile_features(${example_name} PUBLIC ${CXX_FEATURES}) - install(TARGETS ${example_name} RUNTIME DESTINATION bin/examples) -endforeach() +if (EXAMPLES) + file(GLOB EXAMPLES_SRC examples/*.cpp) + source_group(examples FILES ${EXAMPLES_SRC}) + foreach(example_source_file ${EXAMPLES_SRC}) + get_filename_component(example_name ${example_source_file} NAME_WE) + set(example_name "example-${example_name}") + add_executable(${example_name} ${example_source_file} ${HEADER_SRCS}) + target_link_libraries(${example_name} ${LUA_LIBRARIES}) + target_compile_features(${example_name} PUBLIC ${CXX_FEATURES}) + install(TARGETS ${example_name} RUNTIME DESTINATION bin/examples) + endforeach() +endif() -file(GLOB TEST_SRC test*.cpp) -source_group(tests FILES ${TEST_SRC}) +if (TESTS) + file(GLOB TEST_SRC test*.cpp) + source_group(tests FILES ${TEST_SRC}) -add_executable(tests ${TEST_SRC} ${HEADER_SRCS}) -target_include_directories(tests PRIVATE ./Catch/include/) + add_executable(tests ${TEST_SRC} ${HEADER_SRCS}) + target_include_directories(tests PRIVATE ./Catch/include/) -find_package(Threads) -target_link_libraries(tests Threads::Threads ${LUA_LIBRARIES}) -install(TARGETS tests RUNTIME DESTINATION bin) + find_package(Threads) + target_link_libraries(tests Threads::Threads ${LUA_LIBRARIES}) + install(TARGETS tests RUNTIME DESTINATION bin) +endif() find_package(PythonInterp 3) if (PYTHONINTERP_FOUND)