Мне нужно выполнить команду cmake после генерации всех файлов. Вот инструкция, которую мне нужно выполнить
file(RENAME ${DFA_FILE_PATH}_bu ${DFA_FILE_PATH})
Я вставил эту инструкцию в конец файла CMakeFiles.txt
. Однако я обнаружил, что на момент выполнения (инструкции) не все файлы были сгенерированы.
Необходимые файлы создаются в подпапке, поэтому вариант add_custom_command
не работает для меня. Также вариант сделать внутренний скрипт, который запускает cmake
и делать то, что мне нужно, мне не подходит.
Вопрос в том, есть ли способ запустить инструкцию после того, как все файлы сгенерированы?
Под «всеми файлами» я подразумеваю файлы, связанные с libpng (который является частью моего проекта). В моем файле cmake pnglib файлы генерируются следующим образом:
if(UNIX)
set(DFA_FILE_PATH ${PROJECT_SOURCE_DIR}/libpng/scripts/pnglibconf.dfa)
execute_process(COMMAND cp --preserve -T ${DFA_FILE_PATH} ${DFA_FILE_PATH}_bu)
file(APPEND ${DFA_FILE_PATH} "option READ_eXIf off\noption WRITE_eXIf off")
endif()
set(PNG_SHARED FALSE CACHE BOOL "")
set(PNG_TESTS FALSE CACHE BOOL "")
set(SKIP_INSTALL_EXPORT TRUE)
set(PNG_INTEL_SSE on)
add_subdirectory(libpng)
set_target_properties(png_static PROPERTIES FOLDER "3rd party/png")
set_target_properties(genfiles PROPERTIES FOLDER "3rd party/png")
target_include_directories(png_static
PUBLIC
${PROJECT_BINARY_DIR}/zlib
)
add_library(libpng ALIAS png_static)
if(UNIX)
#restore original libpng/scripts/pnglibconf.dfa file
file(RENAME ${DFA_FILE_PATH}_bu ${DFA_FILE_PATH})
endif()
Перед созданием этих файлов я делаю некоторые изменения в исходном коде pnglib, и после генерации файлов проекта pnglib я хочу удалить эти изменения.
Однако похоже, что оригинальный файл восстанавливается до того, как файлы проекта pnglib сгенерированы