gpt4 book ai didi

cmake - cmake 安装目标中的编译时通配符

转载 作者:行者123 更新时间:2023-12-04 03:19:03 57 4
gpt4 key购买 nike

我是 cmake 的新手,我发现它非常令人沮丧。我试图在构建运行时评估的文件路径中使用通配符,而不是在生成构建时。

我创建了一个构建,它使用 SWIG 为某些 C++ 代码生成 Java 包装器。我可以编写命令来生成 native 代码、编译它并生成一个有效的共享库,甚至可以使用 INSTALL 命令正确安装该共享库。我不知道该怎么做是编写一个 INSTALL 命令,该命令可以将 SWIG 生成的所有 *.java 文件复制到同一个安装位置。

似乎 cmake 的 FILE GLOB 命令在 cmake 执行时执行 globbing,而不是在构建实际运行时执行。当然,cmake执行的时候,SWIG还没有运行,Java文件也不存在。

有没有办法做我想做的事?我做错了吗?看起来这是 Makefile 需要做的事情的一个基本部分,我真的很惊讶没有找到一种简单的方法来做到这一点。

最佳答案

假设Java包装器位于当前二进制目录中,您可以使用以下install在安装时复制 Java 文件的命令:

install(
CODE "file( GLOB _GeneratedJavaSources \"${CMAKE_CURRENT_BINARY_DIR}/*.java\" )"
CODE "file( INSTALL \${_GeneratedJavaSources} DESTINATION \"$ENV{HOME}\" )"
)
CODE install的形式command 用于在运行安装目标时执行两个 CMake 命令。第一个将所有生成的 Java 文件收集到一个辅助变量中。第二个使用 INSTALL file的形式命令复制文件。

关于cmake - cmake 安装目标中的编译时通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637261/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com