Mercurial > code
view cmake/CodeFunctions.cmake @ 506:627284574e42
Sockets: massive update
- Separate Ip in Ipv4 and Ipv6,
- Socket have no state, condition, action anymore (use Condition instead),
- Get rid of Stream(Client|Connection|Server).
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 22 Feb 2016 16:09:51 +0100 |
parents | b280d7aca160 |
children |
line wrap: on
line source
function(code_define_module) set(options NO_TEST) set(oneValueArgs NAME) set(multiValueArgs SOURCES RESOURCES LIBRARIES INCLUDES FLAGS) cmake_parse_arguments(MOD "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if (NOT MOD_NAME) message(FATAL_ERROR "Argument NAME is not set") endif () string(TOUPPER ${MOD_NAME} optionname) # Tests are optional if (NOT ${MOD_NO_TEST}) # Create the option for enabling the test option(WITH_${optionname} "Enable ${MOD_NAME}" On) if (WITH_${optionname}) # Add the test executable set(MAIN ${CMAKE_CURRENT_SOURCE_DIR}/test/main.cpp) if (NOT EXISTS ${MAIN}) message(FATAL_ERROR "${MAIN} file does not exists") endif () # # Copy optional resources in the ${CMAKE_BINARY_DIR}/${MOD_NAME} directory. # if (MOD_RESOURCES) foreach (res ${MOD_RESOURCES}) get_filename_component(inputname ${res} NAME) set(output ${CMAKE_BINARY_DIR}/${MOD_NAME}/${inputname}) add_custom_command( OUTPUT ${output} COMMENT "Copying ${inputname}" DEPENDS ${res} COMMAND ${CMAKE_COMMAND} -E copy ${res} ${output} ) list(APPEND MOD_SOURCES ${output}) endforeach() endif () # # Finally create the executable and the test # add_executable(test-${MOD_NAME} ${MOD_SOURCES} ${MOD_RESOURCES} ${MAIN}) add_test( NAME ${MOD_NAME} COMMAND test-${MOD_NAME} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) set_target_properties( test-${MOD_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR} RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_BINARY_DIR} ) target_compile_definitions(test-${MOD_NAME} PRIVATE ${MOD_FLAGS}) target_include_directories( test-${MOD_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${MOD_INCLUDES} ) target_link_libraries(test-${MOD_NAME} gtest ${MOD_LIBRARIES}) endif () endif () endfunction()