【发布时间】:2021-06-18 23:09:48
【问题描述】:
我目前正在为一个大型项目制作安装程序,它需要从数据库中获取最新的表。到目前为止,数据库转储是手动完成的,现在我希望在生成安装程序时自动完成。由于已经有一个脚本在执行转储过程,我想知道是否可以告诉 CPack(或 CMake)在生成安装程序之前先运行这个脚本?比如CMakeList中有一条规则:
install(
FILES "../db/structures.sql"
DESTINATION ${INSTALL_DB}
CONFIGURATIONS Release
RENAME "create.sql"
)
Sql-Dump 文件“structures.sql”可以使用另一个名为“make_db_dump.pl”(因此在命令行中应该使用“perl make_db_dump.pl”来调用它)。我希望在生成安装程序之前自动调用 make_db_dump.pl 并生成文件。这可能吗?
对于环境:我在windows下使用VS 2019和CMake。
而工作流程是:CMake -> VS Project -> 生成安装程序
【问题讨论】:
-
只需创建文件
structures.sql作为构建 过程的一部分(使用add_custom_target/add_custom_command)。因此,该文件将在安装程序打包时存在。请注意,安装过程只是“将此文件放入安装目录”。创建要安装的文件是 build 过程的责任。 -
@Tsyvarev 这个项目实际上没有构建过程,它实际上只是将所有数据库相关文件和一些其他配置打包在一起。这样的事情还能做吗? (对不起,我是 CMake 新手)
-
创建您想要交付给用户的任何文件都是一个构建过程。即使这个创建是“简单地将所有与数据库相关的文件和一些其他配置打包在一起”。 安装(或打包)适用于所有已现有所需的文件。
-
@Tsyvarev 明白了,tyvm :)
标签: cmake visual-studio-2019 nsis cpack