Связывание библиотек как часть флагов в файле 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})