【问题标题】:cmake add prefix to linkercmake 为链接器添加前缀
【发布时间】:2014-09-27 02:29:30
【问题描述】:

我知道如何为链接器添加前缀。我需要这个,因为我需要在编译和链接之前添加靶心编译器和链接器前缀。

SET(CMAKE_CXX_COMPILER "${BULLSEYE_PREFIX_CC} --no-banner ${CMAKE_CXX_COMPILER}")
SET(CMAKE_C_COMPILER "${BULLSEYE_PREFIX_CC} --no-banner ${CMAKE_C_COMPILER}")

我似乎找不到类似的链接器。有什么指点吗?

谢谢, 尼克

这些是我的编译器和链接器前缀的值。编译器工作正常并生成 cov 文件。但是,链接器似乎没有生成可执行文件。它编译文件并构建可执行文件,但随后它说它的链接并失败。不知道发生了什么:(

C:/src/sw/tools/Bullseye/win32/8.7.33/BullseyeCoverage/bin/covc.exe C:/src/sw/to
ols/win32/msvc110/VC/bin/cl.exe
C:/src/sw/tools/Bullseye/win32/8.7.33/BullseyeCoverage/bin/covlink.exe <CMAKE_CO
MMAND> -E vs_link_exe <CMAKE_CXX_COMPILER> /nologo <OBJECTS> @<<
 <FLAGS> /Fe<TARGET> /Fd<TARGET_PDB> -link /implib:<TARGET_IMPLIB> /version:<TAR
GET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <L
INK_LIBRARIES>
<<

【问题讨论】:

  • 我猜它与清单有关。有 VS 知识的人吗?

标签: c++ visual-studio linker cmake bullseye


【解决方案1】:

使用CMAKE_CXX_LINK_EXECUTABLE:

set(CMAKE_CXX_LINK_EXECUTABLE "${BULLSEYE_PREFIX_CC} ${CMAKE_CXX_LINK_EXECUTABLE}")

请注意,它不仅是链接器的路径,还包括标志和变量,例如对于 cygwin CMAKE_CXX_LINK_EXECUTABLE 是:

<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> -Wl,--out-implib,<TARGET_IMPLIB> -Wl,--major-image-version,<TARGET_VERSION_MAJOR>,--minor-image-version,<TARGET_VERSION_MINOR> <LINK_LIBRARIES>

注意

这将添加前缀,但您应该小心。我建议使用message 命令打印,看看结果是你想要的。这个变量不容易自定义,所以你可能需要在 cmake 中做一些字符串处理。

【讨论】:

  • 好的,我试过了。链接器不会构建可执行文件。它可以很好地编译所有文件,但不会产生可执行文件。不确定是编译器还是链接器问题。必须是链接器。它说链接可执行文件,但并没有真正生成任何可执行文件。奇怪..
猜你喜欢
  • 1970-01-01
  • 2017-06-09
  • 2015-10-03
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 2014-08-23
  • 2012-04-03
相关资源
最近更新 更多