У меня есть два проекта cmake на Windows.PROJECT_A выводит исполняемый файл, а PROJECT_B выводит статическую библиотеку.Project_B имеет свой собственный файл cmake и может быть построен самостоятельно.
PROJECT_B находится в подпапке PROJECT_A, а PROJECT_A включает PROJECT_B с использованием функции cmake add_subdirectory ().
PROJECT_B устанавливает переменную среды(PROJECT_B_BUILD_DIR), который содержит значение CMAKE_CURRENT_BINARY_DIR для PROJECT_B, так что PROJECT_A может найти и связать статическую библиотеку, сгенерированную им.
При запуске cmake из командной строки для сборки PROJECT_A, PROJECT_B выдает библиотеку для отладчика или отладчикавнутри PROJECT_B_BUILD_DIR и, таким образом, PROJECT_A связывается с выводом PROJECT_B, используя следующее:
set(LIBS
debug ${PROJECT_B_BUILD_DIR}/Debug/project_b.lib
optimized ${PROJECT_B_BUILD_DIR}/Release/project_b.lib
)
target_link_libraries(project_a ${LIBS})
Однако при запуске cmake из CLion подкаталоги Debug и Release не создаются, а библиотеки выводятся непосредственно в PROJECT_B_BUILD_DIR и, таким образом, PROJECT_не удается связать с project_b, потому что пути, переданные в target_link_libraries (), теперь неверны.
Я мог бы решить проблему, удалив Debugи Освободить части путей, переданных в target_link_libraries (), однако это нарушит сборку для любого, кто строит проект из командной строки.
Какая будет хорошая стратегия для решения этой проблемы?