Как заставить компилятор найти библиотеку X11 для проекта JNI maven? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь скомпилировать проект JPen , используя maven.Проект, похоже, был заброшен, и текущая база кода не компилируется на моей машине при запуске стандартной сборки.Предполагается, что проект должен создать оболочку из драйверов, которые могут читать цифровые планшеты для Win, MacOS и Linux.

После некоторой настройки файла POM для обновления некоторых устаревших библиотек я попытался выполнить сборку, но нажалстена, когда он пытается связать код C.Он использует мой Qt mingw32 для связи и, похоже, не может найти библиотеку Xi, которая имеет код X11:

--- nar-maven-plugin:3.2.3:nar-compile (default-nar-compile) @ jpen ---
Compiling 3 native files
3 total files to be compiled.
3 total files to be compiled.
Found 4 processors available
Found 4 processors available
Limited used processors to 3
Limited used processors to 3

Starting Core 0 with 1 source files...

Starting Core 0 with 1 source files...

Starting Core 1 with 1 source files...

Starting Core 1 with 1 source files...

Starting Core 2 with 1 source files...

Starting Core 2 with 1 source files...
Linking...
Linking...
Starting link {5.3.0 -shared -LD:\dev\sourceforge.com\jpen-code\src\main\c\windows\lib -Bdynamic -lWINTAB32 -Bdynamic -lXi -shared-libgcc}
Starting link {5.3.0 -shared -LD:\dev\sourceforge.com\jpen-code\src\main\c\windows\lib -Bdynamic -lWINTAB32 -Bdynamic -lXi -shared-libgcc}
C:/Qt/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lXi
collect2.exe: error: ld returned 1 exit status
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 23.056s
Finished at: Tue Oct 02 13:40:31 EDT 2018
Final Memory: 19M/151M
------------------------------------------------------------------------
Failed to execute goal com.github.maven-nar:nar-maven-plugin:3.2.3:nar-compile (default-nar-compile) on project jpen: NAR: Compile failed: g++ failed with return code 1 -> [Help 1]

Соответствующая часть файла pom выглядит так:

    <profile>
      <id>amd64</id>
      <activation>
        <os>
          <arch>amd64</arch>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
              <!--
            <groupId>org.freehep</groupId>
            <artifactId>freehep-nar-plugin</artifactId>
            <version>2.0-alpha-10</version>
            -->
            <groupId>com.github.maven-nar</groupId>
            <artifactId>nar-maven-plugin</artifactId>
            <version>3.2.3</version>
            <extensions>true</extensions>
            <configuration>
              <output>jpen-${module.version}-${jpen.provider.xinput.nativeVersion}-x86_64</output>
              <linker>
                <name>g++</name>
                <sysLibs>
                  <sysLib>
                    <name>Xi</name>
                    <type>shared</type>
                  </sysLib>
                </sysLibs>
              </linker>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>i386-on-amd64</id>
      <activation>
        <file>
          <exists>/usr/include/gnu/stubs-32.h</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <!--
    Also build i386 lib under amd64
  -->
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <phase>process-classes</phase>
                <configuration>
                  <tasks>
                    <mkdir dir="target/nar/lib/i386-Linux-g++/jni/"/>
                    <exec executable="gcc" dir="target/nar/lib/i386-Linux-g++/jni/">
                      <arg value="-m32"/>
                      <arg value="-fpic"/>
                      <arg value="-shared"/>
                      <arg value="-o"/>
                      <arg value="libjpen-${module.version}-${jpen.provider.xinput.nativeVersion}.so"/>
                      <arg value="-LXi"/>
                      <arg value="../../../../../src/main/c/linux/Bus.c"/>
                      <arg value="../../../../../src/main/c/linux/Device.c"/>
                      <arg value="../../../../../src/main/c/linux/jpen_cFramework_TestType.c"/>
                      <arg value="../../../../../src/main/c/linux/jpen_provider_xinput_XiBus.c"/>
                      <arg value="../../../../../src/main/c/linux/jpen_provider_xinput_XiDevice.c"/>
                      <arg value="../../../../../src/main/c/linux/macros.c"/>
                      <arg value="../../../../../src/main/c/linux/TestType.c"/>
                    </exec>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

Кто-нибудь знает, как я мог бы создать этот код?

...