我是 cmake 的新手,我发现它非常令人沮丧。我试图在构建运行时而不是生成构建时评估的文件路径中使用通配符。
我创建了一个使用 SWIG 为某些 C++ 代码生成 Java 包装器的构建。我可以编写命令来生成本机代码、对其进行编译并生成工作共享库,甚至使用 INSTALL 命令来正确安装该共享库。我不知道该怎么做是编写一个 INSTALL 命令,该命令可以将 SWIG 生成的所有 *.java 文件复制到同一安装位置。
似乎 cmake 的 FILE GLOB 命令在执行 cmake 时进行通配,而不是在构建实际运行时进行。当然,当cmake执行时,SWIG还没有运行,Java文件还不存在。
有办法做我想做的事吗?我做错事了吗?看起来这是 Makefile 需要做的事情的一个基本部分,我真的很惊讶没有找到一种简单的方法来做到这一点。
假设 Java 包装器位于当前二进制目录中,您可以使用以下命令install
安装时复制 Java 文件的命令:
install(
CODE "file( GLOB _GeneratedJavaSources \"${CMAKE_CURRENT_BINARY_DIR}/*.java\" )"
CODE "file( INSTALL \${_GeneratedJavaSources} DESTINATION \"$ENV{HOME}\" )"
)
The CODE
的形式install
命令用于在运行安装目标时执行两个 CMake 命令。第一个将所有生成的 Java 文件收集在辅助变量中。第二个使用的是INSTALL
的形式file
命令复制文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)