cmake добавляет префикс к компоновщику

Я знаю, как добавить префикс к компоновщику. Мне это нужно, потому что мне нужно добавить префиксы компилятора и компоновщика перед тем, как компилировать и связывать.

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>
<<

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>

Заметка

Это добавит префикс, но вы должны быть осторожны. Я бы предложил распечатать с помощью команды сообщения и посмотреть, что результат, что вы хотите. Эта переменная не легко настраивается, поэтому вам может потребоваться выполнить некоторую обработку строк в cmake.

Другие вопросы по тегам