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