SET(WINE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/main.c ) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mock/bin") file(MAKE_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") set(WINE_MOCK_ARCHIVE_DIR "${CMAKE_CURRENT_BINARY_DIR}") set(WINE_MOCK_ARCHIVE_DIR "${WINE_MOCK_ARCHIVE_DIR}" PARENT_SCOPE) add_executable(wine_mock ${WINE_SOURCES}) set_target_properties(wine_mock PROPERTIES OUTPUT_NAME "wine") target_compile_options(wine_mock PUBLIC ${CFLAGS}) set(WINE_MOCK_ARCHIVE_FILE_NAME "wine-mock.tar.xz") set(WINE_MOCK_ARCHIVE_FILE "${WINE_MOCK_ARCHIVE_DIR}/${WINE_MOCK_ARCHIVE_FILE_NAME}") string(REGEX REPLACE "\\.| |-" "_" WINE_MOCK_ARCHIVE_FILE_NAME ${WINE_MOCK_ARCHIVE_FILE_NAME}) set(WINE_MOCK_ARCHIVE_OUT "${WINE_MOCK_ARCHIVE_DIR}/${WINE_MOCK_ARCHIVE_FILE_NAME}") set(WINE_MOCK_ARCHIVE_OUT "${WINE_MOCK_ARCHIVE_OUT}" PARENT_SCOPE) add_custom_command( OUTPUT ${WINE_MOCK_ARCHIVE_FILE} COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${WINE_MOCK_ARCHIVE_FILE}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" DEPENDS wine_mock ) add_custom_command( OUTPUT ${WINE_MOCK_ARCHIVE_OUT}.c ${WINE_MOCK_ARCHIVE_OUT}.h COMMAND ${CMAKE_COMMAND} "-Dbin_in=${WINE_MOCK_ARCHIVE_FILE}" -P ${CMAKE_SOURCE_DIR}/cmake/FileEmbed.cmake DEPENDS ${WINE_MOCK_ARCHIVE_FILE} ) add_custom_target(wine_mock_archive ALL DEPENDS ${WINE_MOCK_ARCHIVE_OUT}.c ${WINE_MOCK_ARCHIVE_OUT}.h)