2010-08-09 30 views
2

我遇到了我正在处理的软件问题。使用Java和Ant进行条件编译

我们正在通过JNA访问Windows系统调用,我们必须定义一些Windows结构(扩展了JNA结构的Java类)才能访问它们。

应用程序必须使用32位和64位体系结构,但结构的问题是它们中的属性会根据系统体系结构(例如从int到long)而改变。

是否有一种简单(和理智)的方式来使用ant在Java中进行条件编译a-la #ifdef?有没有其他方法来实现这种条件#ifdef?

我们正在考虑的另一种方式是创建一个通用接口,为32位和64位创建两个不同的结构,然后用一些if-else处理不同的情况。

谢谢。

回答

4

请问蚂蚁条件条款不做

http://ant.apache.org/manual/Tasks/condition.html

UPDATE: 我想,我终于得到了你想要做什么。看javachere我不认为Java编译器会让你这样做,无论你放在Ant中的条件如何。无论哪种方式,我在stackoverflow上找到了关于确定系统架构的文章以及在太阳论坛上的thread,您可能会发现它们很有帮助。

+0

+1在我之前。另外,使用if参数为您的构建目标。 – 2010-08-09 14:54:25

+0

嗯,我真的不知道如何使用它来在编译时启用Java代码中的部分代码。我最好看看如何使用任务。 谢谢你指出我。 – 2010-08-10 07:39:18

+0

我不熟悉#ifdef的作用。您是否试图在程序代码中将整数更改为long,具体取决于您正在编译的体系结构? – 2010-08-10 08:21:48

0

wwyt是Java语言的条件编译预处理器。它接受(注释掉)像#if,#else,....等指令。它是一个Windows命令行工具,可以在调用Ant进行构建之前用作预处理器。 (构建完成后,它可以将转换后的文件恢复到原始状态。)不知道这是否有帮助,只是你知道。链接在这里:http://www.adarian.com/wwyt

相关问题