CMake ссылка этап вопрос - PullRequest
4 голосов
/ 23 июля 2010

В настоящее время я создаю довольно большое приложение, использующее cmake для генерации сценариев кросс-платформенной сборки.Во время этого процесса создания сценариев сборки cmake я обнаружил, что нужно упорядочить строки ссылок gcc.

Основные проблемы заключаются в том, что включение статических библиотек в неправильном порядке приводит к выбрасыванию неиспользуемых символов библиотеки, чтоне могут быть найдены последующими зависимыми библиотеками.

Таким образом, я нахожусь в ситуации, когда cmake генерирует систему сборки visual studios, которая прекрасно компилируется, но make-файлы unix генерируют все виды ошибок «неопределенного символа».Я нашел способ обойти это - в команде add_executable я включаю статические библиотеки дважды.

Я надеюсь, что есть более стандартный / лучший способ решения этой проблемы.Поскольку я не единственный разработчик, и что большинство регулярных разработок выполняется в Windows, я действительно хочу сценарий CMake, независимый от порядка ссылок.Разработчики Windows просто не занимаются этой проблемой порядка ссылок.Кроме того, выяснить правильный порядок было бы очень сложно - у меня нет этой информации, и есть много статических библиотек (около 70).

После поиска в Интернете я сделалузнать о флагах -static и -dynamic, но заставить CMake включить их неочевидно, и gcc жалуется на невозможность найти динамические библиотеки.

В любом случае, я приветствую предложения о том, как поступить правильновещь.

Ответы [ 2 ]

3 голосов
/ 23 июля 2010

Вы пытались отключить полосу?Может быть с чем-то вроде cmake -DCMAKE_STRIP=/bin/true ..?Может быть, это остановит выбрасывание символов.

2 голосов
/ 26 июля 2010

Я думаю, что это не проблема CMake, а скорее поведение GCC. Этот вопрос / ответ должен помочь немного:

Заказ компоновщика в GCC

Вам нужно будет прикусить пулю и изменить файлы CMakeLists.txt для правильной связи в Linux Поскольку разработчикам Windows все равно, их не стоит беспокоить.

Best
-дан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...