Как мне "CMake'ify" включить заголовки потоков? - PullRequest
0 голосов
/ 25 марта 2020

В моем исходном файле у меня есть:

#ifdef __unix__
#include <pthread.h>
#else
#ifdef _WIN32
#include <processthreadsapi.h>
#endif // _WIN32
#endif // __unix__

(Да, это не самый большой кусок кода, но он связан ограничениями другой библиотеки, с которой я взаимодействую.)

Теперь, CMake - это механизм, который связывает меня с библиотекой для ссылок; Итак, я хочу использовать те же логики c, что и в CMake, чтобы решить, использовать ли потоки WIndows или pthreads. Или - пусть CMake примет это решение за меня.

Как мне это сделать?

Я хочу, чтобы CMake решил эти вещи за меня

1 Ответ

0 голосов
/ 25 марта 2020

Моя текущая идея - сделать следующее в CMakeLists.txt:

if(DEFINED CMAKE_USE_PTHREADS_INIT)
        target_compile_definitions(cuda-api-wrappers PUBLIC "CUDA_API_WRAPPERS_USE_PTHREADS");
else if(DEFINED CMAKE_USE_WIN32_THREADS_INIT)
        target_compile_definitions(cuda-api-wrappers PUBLIC "CUDA_API_WRAPPERS_USE_WIN32_THREADS");
endif()
endif()

, затем в файле C ++ записать:

#ifdef CUDA_API_WRAPPERS_USE_PTHREADS
#include <pthread.h>
#else
#ifdef CUDA_API_WRAPPERS_USE_WIN32_THREADS
#include <processthreadsapi.h>
#endif
#endif

, но мне интересно, правильный ли это подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...