1

我有一个包含多个子模块和子子模块的项目,其中包含 java 和本地语言代码(主要是本地语言)。为了处理这个本机代码,我使用maven-nar-plugin. 现在,我没有在本地存储库中编译本机代码所需的所有包含。有没有给目录提供目录maven-nar-plugin并包含其中的所有内容?

我已经在模块的pom中使用了<systemIncludePaths>and <includePaths>,但它仍然无法编译。

如果有比我要走的方向更简单的方法,请解释一下。

4

1 回答 1

1

以下仍在进行中,但我认为我在正确的轨道上。我从以下(标准)目录结构开始,我想在其中包含一个 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
于 2013-06-22T09:54:07.327 回答