Build System Integration¶
XXXX
Bazel¶
CMake¶
find_package(Threads REQUIRED)
set(COCO_PATH coco)
file(GLOB_RECURSE COCO_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.coco")
# Calculate the output files based on the .coco file names
set(COCO_GENERATED_HEADERS)
set(COCO_GENERATED_SOURCES)
foreach(file ${COCO_SOURCES})
string(REGEX REPLACE "^src/(.*)[.]coco$" "generated/\\1.h" hdr ${file})
string(REGEX REPLACE "^src/(.*)[.]coco$" "generated/\\1.cc" src ${file})
list(APPEND COCO_GENERATED_HEADERS ${hdr})
list(APPEND COCO_GENERATED_SOURCES ${src})
endforeach()
# Generate normal .cc/.h files and create a library for them
add_custom_command(
OUTPUT ${COCO_GENERATED_HEADERS} ${COCO_GENERATED_SOURCES}
COMMAND ${COCO_PATH} --package ${CMAKE_CURRENT_SOURCE_DIR} generate-cpp --output-empty-files
DEPENDS ${COCO_SOURCES}
)
add_library(GeneratedCoco STATIC ${COCO_GENERATED_SOURCES})
target_include_directories(GeneratedCoco PUBLIC generated src-cpp)
# add the executable
add_executable(Tutorial ${CC_SOURCES})
target_link_libraries(Tutorial PRIVATE Threads::Threads GeneratedCoco)