Qbs导出项目不是暂时的

时间:2016-02-01 13:33:52

标签: c++ qt qbs

我有几个项目共享公共类,因此我即将改变项目 通过将它们拆分为实现为静态库的组件来反映这些依赖关系的布局。

现在我创建了一个模块' io'它使用Export块导出其包含路径。该模块依赖于核心'。 '核心'然后依靠“应用程序”依赖于此,到目前为止没有什么特别的。

Export项目的文档说它的属性是可传递的,但是我收到了几个错误 从编译器编译包含从核心的应用程序时无法找到。看着 在编译器语句中,io导出的包含路径未在包含路径中列出。 在应用程序中直接将依赖项添加到io时,一切正常。

我是否使用导出/取消对错误或整体布局不好。

我更改了Qbs的app-and-lib示例以反映我的布局以便澄清。

app
|- main.cpp

lib1
|- lib.cpp

lib2
|- lib.cpp
|- Test.h


=== app-and-lib.qbs
import qbs 1.0

Project {
    references: [
        "app/app.qbs",
        "lib1/lib1.qbs",
        "lib2/lib2.qbs"
    ]
}

=== app.qbs
import qbs 1.0

Product {
    type: "application"
    name : "app-and-lib-app"
    files : [ "main.cpp" ]
    Depends { name: "cpp" }
    Depends { name: "lib1" }
}

=== lib1.qbs
import qbs 1.0

Product {
    type: "staticlibrary"
    name: "lib1"
    files: [ "lib.cpp" ]
    cpp.defines: ['CRUCIAL_DEFINE']
    Depends { name: 'cpp' }
    Depends { name: "lib2" }
}

=== lib2.qbs
import qbs 1.0

Product {
    type: "staticlibrary"
    name: "lib2"
    files: [
        "Test.h",
        "lib.cpp",
    ]
    cpp.defines: ['CRUCIAL_DEFINE']
    Depends { name: 'cpp' }

    Export {
      Depends { name: "cpp" }
      cpp.includePaths: "."
    }
}

=== lib.cpp
#include <stdio.h>
#include "Test.h"


#ifndef CRUCIAL_DEFINE
#   error CRUCIAL_DEFINE not defined
#endif

int bla()
{
    puts("Hello World!");
    return 2;
}

=== main.cpp
#include <stdio.h>
#include "Test.h" // Error cannot found Test.h

int bla();
int main()
{
  Test t = new Test();
    return bla();
}

1 个答案:

答案 0 :(得分:0)

通过IRC到Qbs Jira并得到开发人员的回答,这是文档中的错误。 要导出依赖项,必须将其导出,因此需要像这样扩展lib1.qbs

Exports { 
  Depends { name: "lib2" }
}

跟进:https://bugreports.qt.io/browse/QBS-928