cmake。项目文件生成后执行命令

时间:2019-06-20 14:09:26

标签: cmake

所有文件生成后,我需要执行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项目文件之前恢复了原始文件

0 个答案:

没有答案