gcc - 如何在编译期间强制 cmake 包含 "-pthread"选项?

我知道有类似 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/

相关文章:

java - 将复杂的项目从Ant迁移到Maven-如何处理异常的文件夹结构?

c++ - 如何在 Mac OS X (C++) 中使用 dylib

java - 使Maven构建更快的方法?

ant - 如何在使用 ANT 删除目录之前检查目录是否存在?

build - WiX x64 平台目标

deployment - 构建和部署的区别?

visual-studio-2010 - 如何在 Visual Studio 2010 (C# Ex

build-process - 在 hudson 的工作之间共享构建工件

maven - Java 构建工具 : Ant vs. Maven

build - 编程定义 : What exactly is 'Building' .