QBS中如何获取the_library_set.qbs所在目录的相对路径?
QBS模块中设置相对于项目入口的路径解决方案
要在the_module.qbs的Module Properties中设置相对于项目入口the_library_set.qbs的路径,核心是利用QBS内置的project.sourceDirectory变量,它会直接指向项目入口文件所在的目录。
具体实现步骤
- 在
the_module.qbs中,通过project.sourceDirectory拼接相对路径来设置cpp.includePaths和cpp.libraryPaths:
Module { Properties { // 示例:指向the_library_set.qbs所在目录下的includes文件夹 cpp.includePaths: [project.sourceDirectory + "/includes"] // 示例:指向the_library_set.qbs所在目录下的libs文件夹 cpp.libraryPaths: [project.sourceDirectory + "/libs"] } }
原理说明
project.sourceDirectory是QBS的全局项目变量,其值固定为项目入口文件(即the_library_set.qbs)所在的目录,不受当前.qbs文件的位置影响,完美匹配需求。- 不管项目的构建目录在哪里,或者各个子模块的文件位置如何,用这个变量拼接的路径都会基于入口文件的位置生成正确的绝对路径,避免路径混乱。
扩展调整
如果目标路径有更深的层级(比如入口目录下的thirdparty/includes),直接扩展路径拼接即可:
cpp.includePaths: [project.sourceDirectory + "/thirdparty/includes"]
内容的提问来源于stack exchange,提问作者Vladimir Bershov
相关产品推荐
相关产品推荐

