Связывание библиотек как часть флагов в файле toolchain в cmake

Я пытался добавить PROFILE к CMAKE_BUILD_TYPES, Для этого мне нужно добавить -finstrument-functionsк CMAKE_CXX_FLAGS в файле toolchain и связать принадлежащую библиотеку с абсолютным путем в CMakeLists.txt через target_link_libraries, Пока все хорошо и без проблем.

Но при обновлении информации о сборке cmake проверяет, выполняет ли компилятор свою работу. И теперь "не может скомпилировать простую тестовую программу" из-за отсутствия необходимой библиотеки, которая позже будет связана в CMakeLists.

Поэтому я прокомментировал -finstrument-functions флаг и тестовая программа могут быть скомпилированы.

Я пытался: - Установить библиотеку и путь как часть флагов CXX с -L -l:

  • Использовать link_directories(<dir>) командовать, а также SET(CMAKE_LINK_DIRECTORIES_BEFORE <Path> ) а также SET(CMAKE_LIBRARY_PATH <Path>)

  • Установите переменные в файле цепочки инструментов и вызовите их позже в cmakelists:

SET(ADDITIONAL_PROFILE_LIBRARY  "$ENV{QNX_BASE}/target/qnx7/armle-v7/usr/liblibprofilingS.a")
SET(ADDITIONAL_PROFILE_FLAGS "-finstrument-functions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "${ADDITIONAL_PROFILE_FLAGS}")
add_executable(toolchainTester main.cpp)
target_link_libraries(toolchainTester ${ADDITIONAL_PROFILE_LIBRARY})

Но тогда получаю ошибку: mingw32-make.exe[3]: *** No rule to make target 'C:/qnx700/target/qnx7/armle-v7/usr/liblibprofilingS.a', needed by '../out/profileout'. Stop.

Есть у кого-нибудь еще идеи? Заранее спасибо.

1 ответ

Если кто-то ищет тот же обходной путь, как управлять разными флагами и библиотеками для разных профилей, это один из рабочих способов:

Сначала установите переменные в инструментальном файле

SET(ADDITIONAL_PROFILE_LIBRARY  "$ENV{QNX_BASE}/target/qnx7/armle-v7/usr/lib/libprofilingS.a")
SET(ADDITIONAL_CXX_FLAGS "-finstrument-functions")

Вызов / перезапись их в CMakeLists.txt

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "${ADDITIONAL_CXX_FLAGS}")

add_executable(toolchainTester main.cpp)

target_link_libraries(toolchainTester ${ADDITIONAL_PROFILE_LIBRARY})
Другие вопросы по тегам