我现在cmake
用来构建我的项目,我想qbs
在将来迁移到。我有一些来自 github 的开源子模块,它们目前是用 构建的cmake
,并且使用cmake
's包含在我的项目中add_subdirectory
。我试图研究,但add_subdirectory
在 qbs 中没有找到替代品。
我不认为将所有子模块构建系统从cmake
to迁移到qbs
是一个好主意,因为这意味着我也必须迁移子模块的子模块或子模块的子模块 :)
有什么帮助吗?谢谢!
我现在cmake
用来构建我的项目,我想qbs
在将来迁移到。我有一些来自 github 的开源子模块,它们目前是用 构建的cmake
,并且使用cmake
's包含在我的项目中add_subdirectory
。我试图研究,但add_subdirectory
在 qbs 中没有找到替代品。
我不认为将所有子模块构建系统从cmake
to迁移到qbs
是一个好主意,因为这意味着我也必须迁移子模块的子模块或子模块的子模块 :)
有什么帮助吗?谢谢!
要引入使用不同工具构建的项目,您需要某种包装器。例如,假设你的 cmake 子项目是一个库,你可以这样写(未经测试):
Product {
type: ["dynamiclibrary"]
Group {
files: ["subdir/CMakeLists.txt"]
fileTags: ["cmake_project"]
}
Group {
files: ["subdir/*"]
excludedFiles: ["subdir/CMakeLists.txt"]
fileTags: ["cmake_sources"]
}
Rule {
inputs: ["cmake_project"]
auxiliaryInputs: ["cmake_sources"]
Artifact {
filePath: ... // Whatever cmake produces
fileTags: ["dynamiclibrary"]
}
prepare: {
var cmd = new Command("cmake", [/*cmake arguments*/]);
cmd.description = "building cmake project xyz";
cmd.workingDirectory = product.sourceDirectory + "/subdir";
return [cmd];
}
}
}
您可能应该调整 cmake 调用,以便生成的二进制文件最终出现在 qbs 的构建目录中。如果事实证明存在合理的抽象级别,将来可能会有此类事情的便利功能。