Путаница в отношении требований к транзитивному использованию в CMakeC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 Путаница в отношении требований к транзитивному использованию в CMake

Сообщение Гость »


В этой ситуации есть 4 цели:

TargetC должен ссылаться на TargetB, а TargetB должен ссылаться на TargetA.

TargetA также зависит от библиотеки C MyCLibrary.

Эта зависимость указывается в CMake следующими вызовами:
CMakeLists.txt
TargetC
. . . target_link_libraries (TargetC ЦельБ) . . . CMakeLists.txt
TargetB
. . . find_package (TargetA CONFIG) target_link_libraries(TargetB ЧАСТНАЯ ЦельА) . . . CMakeLists.txt
TargetA:
. . . find_library(MyCLibrary "myclibrary") . . . target_link_libraries(TargetA Частный ${MyCLibrary}) . . .
Однако при сборке TargetC он связывает TargetB И TargetA, хотя TargetB уже связан TargetA, когда он был построен.

Вот как выглядит фактический процесс связывания, когда я запускаю make VERBOSE=1:

g++ TargetC.o TargetC /path/to/TargetB.a -lTargetA Во-первых, почему CMake вообще генерирует ссылку на TargetA? При вызове target_link_libraries я указал, что TargetA является частной зависимостью для TargetB.

Во-вторых, не является ли ссылка на TargetA излишней, учитывая, что TargetB.a был создан путем ссылки на TargetA?
>
В-третьих, компоновщик не может разрешить библиотеку TargetA, поскольку она передана с параметром -l. Даже если я вручную укажу полный путь к TargetA.a, компоновщик теперь жалуется, что не может разрешить ни один из символов, определенных в MyCLibrary. Однако TargetA.a был создан путем связывания с MyCLibrary, поэтому я не понимаю, почему эти символы должны быть неразрешенными.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Путаница в отношении политических аргументов Laravel
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Путаница в отношении политических аргументов Laravel
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Путаница в отношении .NET, .NET Core, .NET Standard и .NET Framework
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Путаница в отношении .NET, .NET Core, .NET Standard и .NET Framework
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Путаница в отношении .NET, .NET Core, .NET Standard и .NET Framework
    Anonymous » » в форуме C#
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»