No jakoś to działa ale utknąłem w jednym punkcie.
Zrobiłem customowe polecenie, które będzie skanować wszystkie pliki .cpp i .hpp szukając "#file<nazwa_pliku>".- nie do końca finalnie chce żeby tak to działało, jest to na razie taki test.
Zadaniem tego testu jest wygenerowanie wszystkich takich plików i dodaniem ich do projektu w celu zbudowania.
Mam więc taki kod:
add_custom_command(
TARGET ${PROJECT_NAME}
PRE_BUILD
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/compiler.bat" -a ${ALL_PROJECT_SOURCES}
COMMENT "Preprocessing - test"
VERBATIM)
Polecenie jest wywoływane przed wszelkim budowaniem.
Niestety nie do końca wiem jak to zrobić i czy w ogóle tak się da, czyli sytuacja w której nie znam przed wywołaniem komendy stworzonych plików.
Dla testu zrobiłem taki prosty compiler.bat:
@echo off
echo. 2>autogen.cpp
Cały CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED (VERSION 3.3.0)
PROJECT (testcpp)
# Source files
FILE(GLOB_RECURSE __source_SRC RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/cpp/*.cpp"
)
SOURCE_GROUP (TREE "${CMAKE_CURRENT_SOURCE_DIR}/cpp/" PREFIX "Source Files" FILES ${__source_SRC})
SET(ALL_PROJECT_SOURCES
${__source_SRC}
)
INCLUDE_DIRECTORIES(
"./cpp"
)
ADD_EXECUTABLE(${PROJECT_NAME} WIN32
${ALL_PROJECT_SOURCES}
)
IF (WIN32)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
ENDIF (WIN32)
add_custom_command(
TARGET ${PROJECT_NAME}
PRE_BUILD
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/compiler.bat" -a ${ALL_PROJECT_SOURCES}
COMMENT "Preprocessing - test"
VERBATIM)