Добавление библиотеки ссылок только для объектов, скомпилированных из определенного языка? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть проект, включающий как код C ++, так и код CUDA, в частности - двоичные файлы, объекты которых берутся только из кода C ++ (компилятор с обычным компилятором C ++), и двоичные файлы, объекты которых берутся только из кода CUDA (то есть файлов .cu) составлено с nvcc).

Дело в том, что цели, созданные C ++, все еще выполняют некоторые вызовы API CUDA и, таким образом, зависят от библиотек CUDA.

Теперь, чтобы связать бинарные файлы, созданные в CUDA, мне не нужно упоминать библиотеки CUDA; он хорошо связывается, но для библиотек, созданных на C ++, они мне нужны.

Как я могу сказать cmake link_libraries только для моих целей, созданных на C ++?

Или - я думаю об этой проблеме неправильно?

Примечание: я использую CMake> = 3.8 с собственной поддержкой CUDA, поэтому я не использую команды с префиксом cuda_.

1 Ответ

0 голосов
/ 28 августа 2018

Вы, вероятно, должны иметь определенные цели, например, созданные. на add_library или add_executable, а затем используйте target_link_libraries(target_name [PRIVATE | INTERFACE | PUBLIC]library). В качестве общего руководства вы не должны работать на уровне каталогов (link_libraries, include_directories и т. Д.), Это предлагается, например. Даниэль Пфейфер в этот удивительный разговор .

...