我是 CMake 的新手,我遇到了一个无法解决的问题。我正在使用 CMake 编译带有一堆可选子目录的项目,并按预期构建共享库文件。那部分似乎工作正常。这些子目录中的每一个都包含一个 sql 文件。我需要将所有选定的 sql 文件连接到一个 sql 头文件并安装结果。所以一个文件像:
sql_header.sql
sub_dir_A.sql
sub_dir_C.sql
sub_dir_D.sql
如果我直接在 make 文件中执行此操作,我可能会更智能地执行以下操作以仅处理选定的子目录:
cat sql_header.sql > "${INSTALL_PATH}/somefile.sql"
cat sub_dir_A.sql >> "${INSTALL_PATH}/somefile.sql"
cat sub_dir_C.sql >> "${INSTALL_PATH}/somefile.sql"
cat sub_dir_D.sql >> "${INSTALL_PATH}/somefile.sql"
我已经弄清楚了其中的一部分,就像我可以使用的那样:
LIST(APPEND PACKAGE_SQL_FILES "some_file.sql")
我假设我可以将其放置在每个子目录 CMakeLists.txt 文件中以收集文件名。我可以创建一个宏,例如:
CAT(IN "${PACKAGE_SQL_FILES}" OUT "${INSTALL_PATH}/somefile.sql")
但是我在 CMake 最初运行和从 make install 运行之间迷路了。也许有更好的方法来做到这一点。我需要它才能在 Windows 和 Linux 上工作。
我会很高兴有一些提示可以为我指明正确的方向。