我知道有类似 find_package(Threads)
的东西,但它似乎没有什么不同(至少就其本身而言)。现在我正在使用 SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-pthread")
,但它对我来说似乎不是一个正确的解决方案。
最佳答案
CMake 最新版本 (>= 3.1) 中的 Threads 模块生成 Threads::Threads 导入目标。将目标链接到 Threads::Threads 会添加所有必要的编译和链接标志。可以这样做:
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
add_executable(test test.cpp)
target_link_libraries(test Threads::Threads)
根据 CMake docs,强烈建议对新代码使用导入的目标。
关于gcc - 如何在编译期间强制 cmake 包含 "-pthread"选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5395309/