我正在一个应用程序中集成几个静态库。所有库都是用愚者和CMake构建的。不幸的是CMake提供了编译命令的绝对路径,什么原因导致宏__FILE__是编译机器上绝对路径如果我在其他机器上调试库,我会因为路径错误而找不到文件在项目树中,我可以访问库源代码我希望宏__FILE__指向项目根目录的相对路径。是否可以使用CMake和愚者实现这一点?CMake现在只使用绝对路径,愚者根据命令中接收到的路径设置宏__FILE__,所以似乎无法解决这个问题。
__FILE__
wnavrhmk1#
答案是:是的,可以解决这个问题。2很遗憾,不能通过提供相对路径来解决。我们修改-ffile-prefix-map选项在文件中提供路径我们将所有文件绝对路径设置为项目根目录最后一步是通知调试器项目根目录位置由于项目位置对于项目根目录是恒定,因此它将在所有计算机上工作我们使用的解决方案:
-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++,并在柯南(包经理)博客。
An introduction to deterministic builds with C/C++
1条答案
按热度按时间wnavrhmk1#
答案是:是的,可以解决这个问题。2很遗憾,不能通过提供相对路径来解决。
我们修改
-ffile-prefix-map
选项在文件中提供路径我们将所有文件绝对路径设置为项目根目录最后一步是通知调试器项目根目录位置由于项目位置对于项目根目录是恒定,因此它将在所有计算机上工作我们使用的解决方案:
所有的学分@星球谁张贴的想法和文章提供解决方案。如果链接死亡,文章被命名为
An introduction to deterministic builds with C/C++
,并在柯南(包经理)博客。