Очень просто: если существует сторонняя библиотека (в данном случае 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})