Я недавно начал исправлять неработающую сборку на основе CMake.
В проекте используется предварительно собранная библиотека (например, файл .lib & .dll). Зависимость рассматривается как импортированная цель; например:
add_library(the_dependency SHARED IMPORTED GLOBAL)
set_target_properties(
the_dependency
PROPERTIES
IMPORTED_IMPLIB "definitely_correct_path/the_dependency.lib"
)
Сборка проекта с использованием генератора Visual Studio работает нормально. Тем не менее, использование Ninja нарушает сборку, оставляя меня с этой ошибкой:
ninja: error: 'the_dependency.lib', необходимый для 'awesome / target', отсутствует и не имеет известного правила для его создания
Примерно то же самое относится и к NMake:
NMAKE: фатальная ошибка U1073: не знаю, как сделать 'the_dependency.lib'
Что я пробовал:
- Я дополнительно определил свойство
IMPORTED_LOCATION
. - Я проверил пути, и они определенно верны.
Также Находясь в сгенерированных файлах сборки (т.е. build.ninja), он предоставляет правило для «генерации» DLL, но не для файла LIB.
Есть что-то, чего мне не хватает?