我是CMake的新手,我有一个问题,我无法找到解决方案.我正在使用CMake编译一个带有一堆可选子目录的项目,并按预期构建共享库文件.这部分似乎工作正常.这些子目录中的每一个都包含一个sql文件.我需要将所有选定的sql文件连接到一个sql头文件并安装结果.所以一个文件像:
sql_header.sql
sub_dir_A.sql
sub_dir_C.sql
sub_dir_D.sql
Run Code Online (Sandbox Code Playgroud)
如果我直接在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"
Run Code Online (Sandbox Code Playgroud)
我有点想出这个,就像我可以使用:
LIST(APPEND PACKAGE_SQL_FILES "some_file.sql")
Run Code Online (Sandbox Code Playgroud)
我假设我可以放在每个子目录CMakeLists.txt文件中以收集文件名.我可以创建一个像:
CAT(IN "${PACKAGE_SQL_FILES}" OUT "${INSTALL_PATH}/somefile.sql")
Run Code Online (Sandbox Code Playgroud)
但是我在CMake最初运行和从make install运行之间迷路了.也许有更好的方法来做到这一点.我需要这个在Windows和Linux上工作.
我会很高兴有一些提示指出我正确的方向.