You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实际工作路径是什么?如何获取目标文件的对应相对路径?

C++工作路径规则及相对路径写法说明

工作路径的定义

C++程序的工作路径(当前工作目录)和Python规则完全一致,是你执行可执行文件时终端所在的目录,和源代码文件位置、可执行文件存放位置没有直接关系。

你的场景下的相对路径写法

你的项目根目录下有build、data、src三个子目录,可执行文件输出在build目录下,要访问data/exampleData分两种情况:

  • 如果你在项目根目录下执行可执行文件,运行命令为./build/[你的可执行文件名],此时工作路径为项目根目录,相对路径写./data/exampleData即可
  • 如果你先进入build目录再执行可执行文件,运行命令为cd build && ./[你的可执行文件名],此时工作路径为build目录,相对路径需要写../data/exampleData

常见误区说明

  • 相对路径不是相对于FileToRun.cc源代码的位置,源代码位置仅在编译阶段有效,运行时完全不相关
  • 相对路径也不是默认相对于可执行文件的存放位置,除非你刚好在可执行文件所在目录启动程序

固定路径的解决方案

如果不想让路径依赖执行时的工作目录,可以在编译阶段把项目根路径作为宏传入代码:
比如用CMake构建的话,在CMakeLists.txt中加入:

add_definitions(-DPROJECT_ROOT="${CMAKE_SOURCE_DIR}")

之后在C++代码中就可以直接拼接绝对路径:

std::string data_path = std::string(PROJECT_ROOT) + "/data/exampleData";

这样不管你在哪个目录启动程序,都能正确找到文件。

内容的提问来源于stack exchange,提问作者Emilio7773

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:27:01