【问题标题】:OMake compilation with sub-directories带有子目录的 OMake 编译
【发布时间】:2009-07-05 00:21:03
【问题描述】:

查看 OMake 文档时,似乎每当使用来自子目录的源时 - 它们总是首先编译成静态库。这总是必要的吗?我可以在不构建库的情况下编译和链接所有内容吗?我一直在尝试为此编写 OMakefiles,但没有成功。

示例目录结构:

我的项目:OMakeroot、OMakefile、main.cpp

我的项目/标题:file1.h

我的项目/src:file1.cpp


myproject OMakeroot 内容:

打开构建/C

.SUBDIRS: .

myproject Omakefile 内容:

CXX = g++

CXXFLAGS = -墙

包括 += 标头 src

CXXProgram(myapp, main file1)


headers 和 src 目录中的 OMakefiles 是空的,不确定是否需要在其中。

当我运行 omake myapp 时出现错误:

不知道如何构建“myapp”所需的“file1.o”

【问题讨论】:

    标签: c++ omake


    【解决方案1】:

    为了将来参考,以防线程消失,这里是发布在Maxicat 所指线程上的解决方案(改写为仅显示解决方案)。

    不是你必须编译成静态库的情况,但是 默认假设是每个目标文件进入相同的 目录作为源文件。

    包括 += 标头 src

    INCLUDES 仅适用于头文件。你需要

    INCLUDES += $(dir headers)
    .SUBDIRS: src
    

    (Note1 - 前两行的顺序很重要。我的方式 写了,src 目录会得到更新的 INCLUDES;如果你不想 那个,重新排序这两个。)

    (注 2 - 上面会期望一个 src/OMakefile 文件,即使一个 空的就可以了。你可以写类似

    .SUBDIRS: src
       return # A no-op body
    

    将 ./src/OMakefile “内联”到 ./OMakefile 中)

    CXXProgram(myapp, main file1)

    应该是

    CXXProgram(myapp, main src/file1)
    

    【讨论】:

      【解决方案2】:

      试试src/file1,这样omake就知道它需要构建src/file1.o而不是file1.o,因此需要src/file1.cpp而不是file1.cpp(不存在)。

      【讨论】:

        【解决方案3】:

        在 Omake 邮件列表中解决了这个问题,这里的线程链接只是为了完整性:http://lists.metaprl.org/pipermail/omake/2009-July/002094.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-07
          • 2015-01-16
          • 2020-07-02
          • 1970-01-01
          • 2018-04-29
          相关资源
          最近更新 更多