我有一个包含多个子模块和子子模块的项目,其中包含 java 和本地语言代码(主要是本地语言)。为了处理这个本机代码,我使用maven-nar-plugin
. 现在,我没有在本地存储库中编译本机代码所需的所有包含。有没有给目录提供目录maven-nar-plugin
并包含其中的所有内容?
我已经在模块的pom中使用了<systemIncludePaths>
and <includePaths>
,但它仍然无法编译。
如果有比我要走的方向更简单的方法,请解释一下。
我有一个包含多个子模块和子子模块的项目,其中包含 java 和本地语言代码(主要是本地语言)。为了处理这个本机代码,我使用maven-nar-plugin
. 现在,我没有在本地存储库中编译本机代码所需的所有包含。有没有给目录提供目录maven-nar-plugin
并包含其中的所有内容?
我已经在模块的pom中使用了<systemIncludePaths>
and <includePaths>
,但它仍然无法编译。
如果有比我要走的方向更简单的方法,请解释一下。
以下仍在进行中,但我认为我在正确的轨道上。我从以下(标准)目录结构开始,我想在其中包含一个 git c++ 项目:
+---src
+---main
+---c++
+---java
因为我不想改变原来make项目的目录结构,所以需要定义自定义的源目录和自定义的include目录。这是拉取后生成的目录结构(我省略了不相关的文件结构):
+---src
+---main
+---c++
+---data
+--- ...
+---examples
+--- ...
+---scripts
+--- ...
+---src
+---hunalign
+--- ... (source files)
+---include
+--- ... (header files)
+---utils
+--- ... (helper classes)
+---tools
+--- ...
通过以下配置,我编译了项目。
<build>
<plugins>
<plugin>
<artifactId>maven-nar-plugin</artifactId>
<version>2.1-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>executable</type>
<run>true</run>
</library>
</libraries>
<!-- Here is the config for the custom source dir and includes -->
<cpp>
<sourceDirectory>
${basedir}/src/main/c++/src/hunalign
</sourceDirectory>
<includes>
<include>${basedir}/src/main/c++/src/include/*.h</include>
</includes>
</cpp>
<libraries>
<library>
<type>executable</type>
<run>true</run>
</library>
</libraries>
</configuration>
</plugin>
</plugins>
</build>
编辑:为了使 javah 正常运行,我必须对其进行符号链接,因为 maven 一直在错误的位置寻找它:
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/javah /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/jre/bin/javah