Скрытая (отсутствующая) зависимость библиотеки при связывании с cl.exe
-
21-12-2019 - |
Вопрос
Я только что познакомился с большим нетривиальным проектом на C++ на основе CMake/Eclipse.Одна из целей сборки основана на Windows/nmake.На заключительном этапе создания исполняемого файла компоновщик выдает LNK1104:не удается открыть файл 'python27.lib'.Это правильно, потому что Python 2.7 не был установлен.
Проблема в том, что я не могу найти никаких ссылок на эту библиотеку в командной строке cl.exe .Также grep по всему каталогу проекта (включая каталог eclipses .metadata) не найдет ничего правдоподобного.Удаление всего материала для сборки, сгенерированного cmake, тоже не помогло.
Реальный вопрос заключается в том, есть ли у библиотек на основе MSVC (импортных или статических) какой-либо механизм для неявного запроса дополнительных библиотек на этапе ссылки.В упомянутом проекте есть несколько предварительно скомпилированных файлов.Мне просто нужен словарный запас, с которого можно начать более квалифицированный поиск причины ошибки.
Решение
Я нашел ответ здесь:
Загадочная зависимость Boost.Python 1.54 (отладочная сборка) от Python27.lib в Windows
По сути, виновником является #pragma comment()
директива внутри библиотек boost.