使用clang编译器的CMake asio无法找到库pthread

使用clang编译器的CMake asio无法找到库pthread,clang,pthreads,Clang,Pthreads,我正在使用Ubuntu20.04.2 LTS开发一个测试asio应用程序。我可以使用带有CMake的默认compler g++10构建项目,但是当我尝试使用clang13时,CMake无法找到pthread lib 这是我的CMake文件 cmake_minimum_required(VERSION 3.20.0) project(AsioApp VERSION 0.1.0) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address

我正在使用Ubuntu20.04.2 LTS开发一个测试asio应用程序。我可以使用带有CMake的默认compler g++10构建项目,但是当我尝试使用clang13时,CMake无法找到pthread lib

这是我的CMake文件

cmake_minimum_required(VERSION 3.20.0)
project(AsioApp VERSION 0.1.0)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(ASIO_ver 1.18.0)
set(INC_dir ${PROJECT_SOURCE_DIR}/src/include)
set(LIB_dir ${PROJECT_SOURCE_DIR}/../libs)
set(ASIO_dir ${LIB_dir}/asio-${ASIO_ver})

# Enable debug
set(CMAKE_BUILD_TYPE Debug)

# Project settings
add_executable(AsioApp main.cpp)
target_include_directories(AsioApp PUBLIC
    "${INC_dir}"
    "${ASIO_dir}/include"
    )

if(NOT TARGET spdlog)
  # Stand-alone build
  find_package(spdlog REQUIRED)
endif()

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

target_link_libraries(AsioApp PRIVATE
    Threads::Threads
    spdlog::spdlog)
如果我使用gcc-10,项目就能够正确配置

The C compiler identification is GNU 10.2.0
The CXX compiler identification is GNU 10.2.0
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working C compiler: /usr/bin/cc - skipped
Detecting C compile features
Detecting C compile features - done
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Check for working CXX compiler: /usr/bin/c++ - skipped
Detecting CXX compile features
Detecting CXX compile features - done
Looking for pthread.h
Looking for pthread.h - found
Performing Test CMAKE_HAVE_LIBC_PTHREAD
Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
Looking for pthread_create in pthreads
Looking for pthread_create in pthreads - not found
Looking for pthread_create in pthread
Looking for pthread_create in pthread - found
Found Threads: TRUE  
Check if compiler accepts -pthread
Check if compiler accepts -pthread - yes
Configuring done
但是,如果我删除cmake缓存并尝试使用clang(我在本地构建llvm和clang,并将clang安装到其默认位置:/usr/local/bin/clang),则无法找到pthread

The C compiler identification is Clang 13.0.0
The CXX compiler identification is Clang 13.0.0
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working C compiler: /usr/local/bin/clang - skipped
Detecting C compile features
Detecting C compile features - done
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Check for working CXX compiler: /usr/local/bin/clang++ - skipped
Detecting CXX compile features
Detecting CXX compile features - done
Looking for pthread.h
Looking for pthread.h - not found
CMake Error at /snap/cmake/846/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
  /snap/cmake/846/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /snap/cmake/846/share/cmake-3.20/Modules/FindThreads.cmake:238 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  /usr/lib/x86_64-linux-gnu/cmake/spdlog/spdlogConfig.cmake:4 (find_package)
  CMakeLists.txt:27 (find_package)


Configuring incomplete, errors occurred!
See also "/home/r0n9/Code/cpp/AsioOfficialTutorial/build/CMakeFiles/CMakeOutput.log".
See also "/home/r0n9/Code/cpp/AsioOfficialTutorial/build/CMakeFiles/CMakeError.log".
对于使用非默认编译器,我需要做什么