【问题标题】:How not to have dollar sign in target_link_options mangled?如何不让 target_link_options 中的美元符号损坏?
【发布时间】:2023-03-13 17:00:01
【问题描述】:

如果我有这个 CMake 脚本:

add_link_options(--preload-file=temp$.txt)
add_executable(main main.cpp)

add_executable(main main.cpp)
target_link_options(main PUBLIC --preload-file=temp$.txt)

还有一个名为 temp$.txt 的任意文件,它找不到 txt 文件,因为美元符号在实际的编译器调用中变成了类似 \$$ 的东西。

(不要介意实际的链接选项,它是特定于 Emscripten 的选项,但我认为问题并非特定于 Emscripten 开发。)

我应该怎么做才能让它找到我的名称中带有美元符号的文件?

【问题讨论】:

标签: cmake escaping dollar-sign


【解决方案1】:

开发人员seem to agree this is a bug 基于他们的 Discourse 上的讨论。但是,修复它需要一个策略。

与此同时,我发现CMAKE_*_LINKER_FLAGS 变量不会遭受同样糟糕的转义行为,因此您可以在那里设置标志(最好在工具链文件中)。对于可执行文件,变量为CMAKE_EXE_LINKER_FLAGS

【讨论】:

  • 为什么工具链文件更可取?
  • 如果您的代码在没有该标志的情况下无法在 any 平台上编译,则可以放入您的 CMakeLists.txt。否则,如果它不是绝对要求(如源文件、依赖项等),它属于外部,如在工具链文件或预设中。由于这是与 emscripten 相关的(即编译器),因此它更适合工具链描述。
猜你喜欢
  • 2011-04-05
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2015-06-19
相关资源
最近更新 更多