Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qbs导出项目不是暂时的_C++_Qt_Qbs - Fatal编程技术网

C++ Qbs导出项目不是暂时的

C++ Qbs导出项目不是暂时的,c++,qt,qbs,C++,Qt,Qbs,我有几个共享公共类的项目,因此我将更改该项目 布局,通过将其拆分为作为静态库实现的组件来反映这些依赖关系 现在,我创建了一个模块“io”,它使用导出块导出其包含路径。模块依赖于“核心”“核心”本身就依赖于“应用”,到目前为止没有什么特别的 导出项的文档说明它的属性是可传递的,但我发现了几个错误 在编译应用程序时,无法从编译器中找到包含来自core的应用程序。看着 编译器语句,io导出的包含路径未列在包含路径中。 将依赖项直接添加到应用程序中的io时,一切正常 我是否使用了导出/依赖对错误,或者我

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

现在,我创建了一个模块“io”,它使用导出块导出其包含路径。模块依赖于“核心”“核心”本身就依赖于“应用”,到目前为止没有什么特别的

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

我是否使用了导出/依赖对错误,或者我的总体布局不好

我更改了Qbs的应用程序和库示例,以反映我的布局,以便澄清

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();
}
app
|-main.cpp
lib1
|-lib.cpp
lib2
|-lib.cpp
|-测试h
===app-and-lib.qbs
导入qbs 1.0
计划{
参考资料:[
“app/app.qbs”,
“lib1/lib1.qbs”,
“lib2/lib2.qbs”
]
}
==app.qbs
导入qbs 1.0
产品{
类型:“应用程序”
名称:“应用程序和库应用程序”
文件:[“main.cpp”]
依赖于{name:“cpp”}
依赖于{name:“lib1”}
}
==lib1.qbs
导入qbs 1.0
产品{
类型:“静态库”
名称:“lib1”
文件:[“lib.cpp”]
cpp.DEFINE:['critical_DEFINE']
依赖于{name:'cpp'}
依赖于{name:“lib2”}
}
==lib2.qbs
导入qbs 1.0
产品{
类型:“静态库”
名称:“lib2”
档案:[
“Test.h”,
“lib.cpp”,
]
cpp.DEFINE:['critical_DEFINE']
依赖于{name:'cpp'}
出口{
依赖于{name:“cpp”}
cpp.includePaths:”
}
}
==lib.cpp
#包括
#包括“Test.h”
#ifndef关键定义
#错误定义未定义
#恩迪夫
int bla()
{
放置(“你好,世界!”);
返回2;
}
==main.cpp
#包括
#包括“Test.h”//错误找不到Test.h
int-bla();
int main()
{
测试t=新测试();
返回bla();
}

通过IRC联系Qbs Jira,并从开发人员那里得到答案,这是文档中的一个错误。 要导出依赖项,必须导出它,因此lib1.qbs需要像这样扩展

Exports { 
  Depends { name: "lib2" }
}
后续行动: