我怎么能告诉Netbeans我正在交叉编译?

时间:2018-06-18 11:22:58

标签: c linux windows netbeans cross-compiling

请不要将此作为“如何在Linux for Windows上进行交叉编译”的问题回答,我解决了这一部分。我需要一些关于配置Netbeans的具体说明。谢谢。

我正在开发一组C函数,我想在Windows上分发为.dll,在Linux上分发.so。 (这将从java用作JNI库,但这与问题无关)。

开发环境是Netbeans 8.2。

我安装了gcc和mingw,并为两个目标编译我的源代码。

但是,我想创建NetBeans配置“Linux-Release”和“Windows-Release”,Linux-Release使用gcc创建.so文件,Windows-Release使用x86_64-w64-mingw32-gcc。所以我创建了一个Mingw工具集合,它引用了C编译器的mingw版本:

在我的项目属性中,我创建了一个Windows_Debug配置,并告诉它使用Mingw工具集合:

我可以使用此配置来获取正常工作的Dll。但是,输出文件将被放入dist / Windows_Debug / Mingw- Linux 目录(不是dist / Windows_Debug / Mingw- Windows ,就像我想的那样),它是放置 .so 扩展名,而不是 .dll 。当我将它重命名为.dll时,我可以在Windows上加载此文件,但这会让我想要与之合作的任何人感到非常困惑。

天生搞乱生成的Makefile中的CND_DLIB_EXT宏根本没有帮助,它们只会被覆盖。

我想我要告诉Netbeans Mingw Tool Collection编译为Windows,或者Windows_ *配置编译为Windows,因此Netbeans为CND_ *和默认输出Macro设置正确的值

${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libSMAQSJni.${CND_DLIB_EXT}

Project Properties的链接器部分中的

再次起作用。 (当然,作为一种解决方法,我可以从宏中删除变量,并用适当的常量替换它们,但我想这样做“正确”。我还没有找到一种方法告诉Netbeans“这个编译到Windows “无论是在GUI还是在任何配置文件中都没有。所以,我该怎么做?

0 个答案:

没有答案