如果使用愚者和CMake构建静态库,是否可以提供__FILE__宏的相对路径?

xfb7svmp  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(162)

我正在一个应用程序中集成几个静态库。所有库都是用愚者和CMake构建的。不幸的是CMake提供了编译命令的绝对路径,什么原因导致宏__FILE__是编译机器上绝对路径如果我在其他机器上调试库,我会因为路径错误而找不到文件在项目树中,我可以访问库源代码我希望宏__FILE__指向项目根目录的相对路径。
是否可以使用CMake和愚者实现这一点?
CMake现在只使用绝对路径,愚者根据命令中接收到的路径设置宏__FILE__,所以似乎无法解决这个问题。

wnavrhmk

wnavrhmk1#

答案是:是的,可以解决这个问题。2很遗憾,不能通过提供相对路径来解决。
我们修改-ffile-prefix-map选项在文件中提供路径我们将所有文件绝对路径设置为项目根目录最后一步是通知调试器项目根目录位置由于项目位置对于项目根目录是恒定,因此它将在所有计算机上工作
我们使用的解决方案:

cmake_path(NORMAL_PATH PROJECT_ROOT OUTPUT_VARIABLE PROJECT_ROOT_NORMALIZED)
add_compile_options(-ffile-prefix-map=${PROJECT_ROOT_NORMALIZED}=./)

所有的学分@星球谁张贴的想法和文章提供解决方案。如果链接死亡,文章被命名为An introduction to deterministic builds with C/C++,并在柯南(包经理)博客。

相关问题