c - 使用 CMake 链接到 pthread 库(在 CLion 中)

标签 c cmake pthreads

我查看了所有内容,但无法弄清楚如何让 CLion 链接 lpthread 库。我知道使用 gcc,您只需键入 -lpthread,但我需要在 CLion 中进行一些调试。

这是我当前的 CMakeLists 文件:

cmake_minimum_required(VERSION 3.3)

project(lab4)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

include_directories(/usr/include/)
link_directories(/usr/include/)

set(SOURCE_FILES lab4_v2.c)
add_executable(lab4 ${SOURCE_FILES})

最佳答案

在 CMake 2.8.12 之前:

find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG)
  set_property(TARGET my_app PROPERTY COMPILE_OPTIONS "-pthread")
  set_property(TARGET my_app PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
endif()
if(CMAKE_THREAD_LIBS_INIT)
  target_link_libraries(my_app "${CMAKE_THREAD_LIBS_INIT}")
endif()

如果您有 CMAKE 2.8.12+:

find_package(Threads REQUIRED)
if(THREADS_HAVE_PTHREAD_ARG)
  target_compile_options(my_app PUBLIC "-pthread")
endif()
if(CMAKE_THREAD_LIBS_INIT)
  target_link_libraries(my_app "${CMAKE_THREAD_LIBES_INIT}")
endif()

如果你有 CMake 3.1.0+

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(my_app Threads::Threads)

如果您想在 CMake 3.1+ 中使用前两种方法中的一种,您需要:

set(THREADS_PREFER_PTHREAD_FLAG ON)

信息取自 video by Anastasia Kazakova

关于c - 使用 CMake 链接到 pthread 库(在 CLion 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991918/

相关文章:

c - 关于 pthread_create() 和 pthread_join()

C sprintf覆盖?

c - 在 C 程序中,收到警告 : "Statement with no effect"

c++ - cmake:target_link_libraries 使用未共享的静态库

c++ - CMake 在源代码附近找不到头文件

c++ - 为什么当只有一个文件的选项发生变化时 CMake 会重新编译所有库源代码?

c - 在循环中插入链表节点

c - C 中外部变量的动态值

c - 从 pthread 退出会释放 malloced 内存吗?

c - FastCGI 在 c 中的分支