В связи с с использованием cmake для связывания объектных файлов с файлом lib.xxxx.a , но это не совсем то же самое, я создал несколько статических библиотек в Windows с помощью CMake 2.8.x с использованием VS2008 SP1. Есть ли способ через один только CMake повторно связать все файлы .obj внутри всех этих существующих статических библиотек в одну большую монолитную библиотеку, предпочтительно через функцию CMake add_library
, или другая подобная конструкция?
Я думаю, что ответ - «нет», и поэтому я подумал о том, чтобы прокрутить свой собственный с помощью специальной команды с помощью обычного подхода add_custom_command
+ add_custom_target
, который просто создает библиотеку вручную, предоставляя всем остальным библиотекам файлы .obj при вызове LINK.EXE
. Но я вижу некоторые проблемы с этим подходом:
LINK.EXE
. Затем мне пришлось бы каким-то образом получить путь к LINK.EXE
, используя хрупкую эвристику: он хрупкий в том смысле, что разные версии Visual Studio могут размещать файл LINK.EXE
в разных каталоги, а я m, чтобы это работало как для 32-разрядных, так и для 64-разрядных версий компилятора Windows, а также было устойчивым к обновлениям между VS2008 и будущими версиями компилятора. LINK.EXE
, поэтому файл FILE (GLOB ...) Конструкция
была бы моей лучшей второй альтернативой в этом случае. LINK.EXE
через: LINK.EXE / OUT: monolithic. lib lib1.lib lib2.lib ...
, но, возможно, не все .obj ' s будут включены (РЕДАКТИРОВАТЬ: я подтвердил, что LINK.EXE
опускает некоторые файлы .obj из lib1.lib lib2.lib ...
без каких-либо диагностических сообщений, объясняющих почему, так что это подход нестандартный); онлайн-документы для LINK.EXE
неясны по этому поводу. У кого-нибудь есть опыт использования LINK.EXE
таким образом? Спасибо,
Brent
PS, я знаю, как создать DLL с помощью CMake, но я специально не хочу прибегают к созданию библиотеки DLL на данном этапе.