Cmake 在使用CPack和NSIS创建安装程序之前生成文件
我目前正在为一个大型项目制作一个安装程序,它需要从数据库中获取最新的表。到目前为止,数据库转储是手动完成的,现在我希望在生成安装程序时自动完成。由于已经有一个脚本在执行转储过程,我想知道在生成安装程序之前是否可以让CPack(或CMake)先运行这个脚本?例如,CMakeList中有一条规则:Cmake 在使用CPack和NSIS创建安装程序之前生成文件,cmake,visual-studio-2019,nsis,cpack,Cmake,Visual Studio 2019,Nsis,Cpack,我目前正在为一个大型项目制作一个安装程序,它需要从数据库中获取最新的表。到目前为止,数据库转储是手动完成的,现在我希望在生成安装程序时自动完成。由于已经有一个脚本在执行转储过程,我想知道在生成安装程序之前是否可以让CPack(或CMake)先运行这个脚本?例如,CMakeList中有一条规则: install( FILES "../db/structures.sql" DESTINATION ${INSTALL_DB}
install(
FILES "../db/structures.sql"
DESTINATION ${INSTALL_DB}
CONFIGURATIONS Release
RENAME "create.sql"
)
Sql转储文件“structures.Sql”可以使用另一个名为“make_db_Dump.pl”的脚本自动创建(因此在命令行中应该使用“perl make_db_Dump.pl
”)。我希望在生成安装程序之前自动调用make_db_dump.pl并生成文件。可能吗
对于环境:我在windows下使用VS2019和CMake
工作流程是:CMake->VS Project->generating installer在NSIS中,您可以使用
从编译器内部执行外部命令!系统
:
!system '"c:\stuff\app.exe" -foo -bar'
只需在构建过程中创建文件
structures.sql
(使用add\u custom\u target
/add\u custom\u命令
)。因此,该文件将在安装程序打包时存在。请注意,安装过程只是“将此文件放入安装目录”。创建要安装的文件是构建过程的责任。@Tsyvarev实际上这个项目没有构建过程,它实际上只是将所有数据库相关文件打包在一起,以及一些其他配置。还有可能做这样的事情吗?(sry,我是CMake的新手)创建任何要交付给用户的文件都是一个构建过程。即使这种创建是“简单地将所有与数据库相关的文件打包在一起,并进行一些其他配置”。安装(或打包)可以处理所有已经存在的所需文件。@Tsyvarev得到了,tyvm:)但是如何使用CMake?还是CPack?由于这些要求,我无法创建自己的NSIS脚本来生成安装程序,它必须由VS2019和Cmake(CPack)CPack_NSIS_EXTRA_INSTALL_commands生成。使用它,您的解决方案和Tsyvarev的解决方案都可以正常工作,tyvm