gpt4 book ai didi

c++ - CMake SWIG 生成的文件安装和创建 jar

转载 作者:行者123 更新时间:2023-12-05 07:10:38 32 4
gpt4 key购买 nike

我在做两件事时遇到了麻烦,希望得到任何帮助:

1。获取 SWIG 生成的文件列表(在本例中为 java 文件)。

我可以访问/更改输出目录。但我需要一个 java 文件列表。我看到人们这样做的唯一方法是在构建时间后使用一些自定义命令。我希望有更现代的 cmake 方法。

我已尝试使用属性 SWIG_SUPPORT_FILES 但由于某种原因它缺少一个 java 文件。

2。将共享库(javaExample 目标)放入 jar。

CMakeLists.txt:

find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})

find_package(Java REQUIRED)
find_package(JNI REQUIRED)
include(UseJava)

set_property(SOURCE java.i PROPERTY CPLUSPLUS ON)

swig_add_library(javaExample
TYPE SHARED
LANGUAGE java
SOURCES java.i)

set_property(TARGET javaExample PROPERTY SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE)
target_include_directories(javaExample PRIVATE ${JNI_INCLUDE_DIRS})
target_link_libraries(javaExample PRIVATE api)

add_jar(SDK
#Swig generated java files
)

install_jar(SDK .)
install(TARGETS javaExample) # Would like to put this into the jar

最佳答案

聚会有点晚了,但这可以使用 SWIG_SUPPORT_FILES 目标属性来实现:

get_property(_java_files TARGET javaExample PROPERTY SWIG_SUPPORT_FILES)
add_jar(SDK
SOURCES ${_java_files}
)

生成器表达式在某些情况下也适用于此(当为 Python 作为目标语言生成包装器时),但目前 add_jar 似乎还不支持生成器表达式。

关于c++ - CMake SWIG 生成的文件安装和创建 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61151520/

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