Базель: как обнаружить библиотеку? - PullRequest
0 голосов
/ 01 апреля 2020

Очень просто: если существует сторонняя библиотека (в данном случае libnvidia-ml.so, и я знаю, где она находится), тогда установите переменную, которую я могу использовать в коде c ++ (#ifdef FOUND_THIRD_LIBRARY...), и скомпонуйте ее в my_library. Если он не существует, все равно скомпилируйте my_library, просто не связывайте его со сторонней библиотекой или определите FOUND_THIRD_LIBRARY.

Для сравнения, это то же самое в cmake:

include(CheckLanguage)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
   message("CUDA found!")
   set(CUDA_FOUND 1)
   set(NVML "nvidia-ml")
else()
   message("CUDA not found!")
   set(CUDA_FOUND 0)
   set(NVML "")
endif()

...and then...

target_link_libraries(mylib PUBLIC ... "${NVML}" ...)
target_compile_definitions(mylib CUDA_FOUND=${CUDA_FOUND})
...