Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 在使用CPack和NSIS创建安装程序之前生成文件_Cmake_Visual Studio 2019_Nsis_Cpack - Fatal编程技术网

Cmake 在使用CPack和NSIS创建安装程序之前生成文件

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}

我目前正在为一个大型项目制作一个安装程序,它需要从数据库中获取最新的表。到目前为止,数据库转储是手动完成的,现在我希望在生成安装程序时自动完成。由于已经有一个脚本在执行转储过程,我想知道在生成安装程序之前是否可以让CPack(或CMake)先运行这个脚本?例如,CMakeList中有一条规则:

    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