【问题标题】:Conditional compilation with Java and ant使用 Java 和 ant 进行条件编译
【发布时间】:2011-03-27 08:26:56
【问题描述】:

我正在使用的软件有问题。

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

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

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

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

谢谢。

【问题讨论】:

    标签: java ant conditional-compilation


    【解决方案1】:

    Ant 条件子句不会吗

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

    更新: 我想我终于得到了你想要做的事情。看看javachere 我不认为Java 编译器会让你这样做,不管你在Ant 中设置了什么条件。不管怎样,我在 stackoverflow 上找到了关于确定系统架构的帖子,在 sun 论坛上找到了 thread,您可能会觉得有帮助。

    【讨论】:

    • +1 在我之前到达那里。此外,为您的构建目标使用 if 参数。
    • 嗯,我真的不知道应该如何在“编译”时使用它来启用-禁用 Java 文件中的部分代码。我最好看看如何使用任务。谢谢你指点我。
    • 我不熟悉#ifdef 的作用。您是否尝试根据要编译的架构将程序代码中的 int 更改为 long?
    • @maffel:是的,这就是我想要实现的目标。
    • @maffel:感谢其他链接,如果他们以这种方式取得了一些成就,我会尝试看看。但我认为我必须在代码中使用一些 if-else 来处理它。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多