Я пытаюсь следовать современному пути cmake и использовать путь библиотек find_packages () / link.
Я использую тестовый сценарий, в котором:
LIB_B зависит от LIB_A, а EXEC_A зависит от обоих.
Мне было интересно, как вы можете связать EXEC_A с отладочной lib-версией LIB_B и релизной версией LIB_A или наоборот.
В LIB_A я использую set(CMAKE_DEBUG_POSTFIX "-debug")
, поэтому моя LIB_A будет отладкой LIB_A при создании дерева отладки. Я устанавливаю их в / usr / local / lib, и оба находятся там.
Например, допустим, у меня есть эта строка кода в LIB_A:
#ifdef Release
printf("THIS IS RELEASE MODE");
#endif
Это позволит различать LIB_A и LIB_A-debug.
в EXEC_A я бы использовал
find_package(LIBA REQUIRED)
add_executable(EXEC_A main.cpp)
target_link_libraries(EXEC_A PUBLIC LIBS::LIBA LIBS::LIBB)
при условии, что я экспортировал библиотеки в пространство имен LIBS.
Есть ли способ отличить версии библиотеки?
РЕДАКТИРОВАТЬ: я нахожусь на Linux (centos) и использую GCC 8. Моя версия CMake 3.14