В настоящее время я создаю довольно большое приложение, использующее cmake для генерации сценариев кросс-платформенной сборки.Во время этого процесса создания сценариев сборки cmake я обнаружил, что нужно упорядочить строки ссылок gcc.
Основные проблемы заключаются в том, что включение статических библиотек в неправильном порядке приводит к выбрасыванию неиспользуемых символов библиотеки, чтоне могут быть найдены последующими зависимыми библиотеками.
Таким образом, я нахожусь в ситуации, когда cmake генерирует систему сборки visual studios, которая прекрасно компилируется, но make-файлы unix генерируют все виды ошибок «неопределенного символа».Я нашел способ обойти это - в команде add_executable я включаю статические библиотеки дважды.
Я надеюсь, что есть более стандартный / лучший способ решения этой проблемы.Поскольку я не единственный разработчик, и что большинство регулярных разработок выполняется в Windows, я действительно хочу сценарий CMake, независимый от порядка ссылок.Разработчики Windows просто не занимаются этой проблемой порядка ссылок.Кроме того, выяснить правильный порядок было бы очень сложно - у меня нет этой информации, и есть много статических библиотек (около 70).
После поиска в Интернете я сделалузнать о флагах -static и -dynamic, но заставить CMake включить их неочевидно, и gcc жалуется на невозможность найти динамические библиотеки.
В любом случае, я приветствую предложения о том, как поступить правильновещь.