Как правильно связать библиотеки для библиотеки объектов и статической/общей либерации?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как правильно связать библиотеки для библиотеки объектов и статической/общей либерации?

Сообщение Anonymous »

Я пытался заменить все команды, не являющиеся целевыми, на правильные целевые команды моего проекта. Версия Cmake составляет 3.20.5. < /P>
Две основные задачи выполняются в ходе этого процесса. Для первого, я создаю целевую цель интерфейса для управления глобальными параметрами, такими как параметры компиляции. Для другого я добавляю некоторые объекты, пытающиеся свести к минимуму временную стоимость компиляции. < /P>
Вот версия моего проекта SAMLL. < /P>
Project dir
|_ source
| |_ common (SOURCE)
| |_ componentA (SOURCE) Depend on common
|_ test
| |_ testA (TEST) Depend on common and componentA
|_ CmakeList.txt (TOP)
< /code>
Что касается кода, это выглядит так. < /p>
top < /h1>
add_target(global_property INTERFACE)
# ... some options here

add_subdirectory(source)
add_subdirectory(test)
< /code>
common < /h1>
add_target(common_obj OBJECT)
target_linked_libraray(common_obj PUBLIC global_property)
add_library(common_shared SHARED $)
add_library(common_static STATIC $)
< /code> компонент < /h1> add_target(componentA_obj OBJECT)
target_linked_libraray(componentA_obj PUBLIC global_property common_static)
add_library(componentA_shared SHARED $)
add_library(componentA_static STATIC $)
target_linked_libraray(componentA_shared common_static) // my question here
target_linked_libraray(componentA_static common_static) // my question here
< /code>
test < /h1>
add_execute(testA)
target_linked_libraray(testA componentA_static)
< /code>
При составлении Testa сообщает, что содержание общего не может быть найдено. Оказывается, что Componenta_static все еще должен связать common_static для компиляции Testa, уважая тот факт, что Componenta_obj уже связал common_static. < /P>
Это единственный способ использовать его, если Componenta должен связать common_static? Если требуется common_static, вторая ссылка, означает ли она также, что Global_property также должна быть связана снова?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -of-itself
Ответить

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

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

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

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

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