CMake. выполнить команду после генерации файлов проекта - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно выполнить команду 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 сгенерированы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...