cmake. Как добавлять файл только когда он есть?

    cmake_minimum_required(VERSION 3.10 FATAL_ERROR)

set(PROJECT_NAME retom21)

project(${PROJECT_NAME} VERSION 0.0.1)


list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/macros)

include(GlibCompileResourcesSupport)

set(RESOURCE_LIST
    STRIPBLANKS glade/main.glade
    )

compile_gresources(
    RESOURCE_FILE
    XML_OUT
    TYPE EMBED_C
    RESOURCES ${RESOURCE_LIST}
    PREFIX /r21
    )

add_custom_target(
    gladeGeneratedResource
    ALL
    DEPENDS ${RESOURCE_FILE}
    )

#add_executable(${PROJECT_NAME} main.cpp build/resources.c)

# set(sources main.cpp)
add_executable(${PROJECT_NAME} main.cpp)# ${CMAKE_CURRENT_SOURCE_DIR}/build/resources.c)
#moe
#if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/build/resources.c)
#   message("use resources.c")
#   list(APPEND sources build/resources.c)
#   message(${sources})
#endif()

#moe end

include(../common.cmake)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0 REQUIRED)

target_include_directories(retom21 PRIVATE ${GTKMM_INCLUDE_DIRS})
#target_link_directories(retom21 PRIVATE ${GTKMM_LIBRARY_DIRS})

target_link_libraries(retom21 PRIVATE ${GTKMM_LIBRARIES})

Как сделать так чтобы этот файл ${CMAKE_CURRENT_SOURCE_DIR}/build/resources.c, сгенеренный из ресурсов присоединялся к проекту только если он есть? if(EXISTS ..)не работает


Ответы (1 шт):

Автор решения: Anton Kuzmich

Срабатывает такое:

set(sources main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/build/resources.c)
${CMAKE_CURRENT_SOURCE_DIR}/build/resources.c)

include(../common.cmake) # в нем add_executable(retom21 WIN32 ${sources} ${headers})# 
→ Ссылка