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