Я пытаюсь перенести свое решение Visual Studio на CMake.CMake: генерировать источники во время выполнения сценария CMake
У меня есть два проекта - генератор (generator.exe генерирует источники C++ из текстовых файлов) и myProj (включает в себя некоторые текстовые файлы, которые должны обрабатываться генератором.exe).
Что я хочу:
- проект сборки генератора
- использование generator.exe из step1 для создания C++ исходных файлов из текстовых файлов в проекте MYPROJ
- поместить эти сгенерированные исходные файлы в результате VS проекта MYPROJ
Итак, как это сделать?
EDIT то, что я пытался до сих пор:
###################################################################
# in root/generator/CMakeLists.txt:
set(SRC_LIST ....)
set(HDR_LIST ....)
add_executable(generator ${SRC_LIST} ${HDR_LIST})
###################################################################
# in root/my_proj/CMakeLists.txt:
add_subdirectory(../generator/ ../generator/cmake_out)
add_subdirectory(src)
###################################################################
# in root/my_proj/src/CMakeLists.txt:
ADD_CUSTOM_COMMAND(
OUTPUT ../include/SomeSource.h SomeSource.cpp
COMMAND generator ../definitions/SomeDefs1.txt
DEPENDS generator ../definitions/SomeDefs1.txt
)
set(SRC_LIST SomeSource.cpp ....)
set(HDR_LIST SomeSource.h ....)
add_library(myProj STATIC ${SRC_LIST} ${HDR_LIST})
###################################################################
###################################################################
выход CMake в:
.....
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 12 2013
-- Check for working CXX compiler using: Visual Studio 12 2013 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
CMake Error at src/CMakeLists.txt:145 (add_library):
Cannot find source file:
../include/SomeSource.h
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
спасибо за ответ, pls check my edit –
@VramVardanian: Обновлен ответ. – DevSolar
Я всегда перечисляю файлы заголовков (не все включены) как источники CMake, поэтому они отображаются в сгенерированных проектах. – John