对 `pthread_create' CLion 的未定义引用

undefined reference to `pthread_create' CLion

我正在尝试使用 CLion 在 Linux (Ubuntu) OS.

下编译我的程序

我的 CMake 文件:

# cmake_minimum_required(VERSION 3.5)
  project(untitled2 C)

  set(CMAKE_C_STANDARD 99)
  set(CMAKE_CXX_FLAGS -pthread)
  add_executable(untitled2 main.c)

我的程序使用线程,所以 我添加了 set(CMAKE_CXX_FLAGS -pthread) 来编译我的程序。 我得到一个编译错误:"undefined reference to pthread_create"

我可以使用以下命令通过终端编译程序:

gcc main.c -o main -pthread

我认为我的问题出在 CMake 文件上。 有人可以帮我解决这个问题吗?

谢谢!

您必须在 set(CMAKE_C_FLAGS -pthread) 中更改 set(CMAKE_CXX_FLAGS -pthread),因为 CXX 保留用于 C++。希望这会帮助你。

我可能仍然不是最佳选择,但可以调用
find_package(Threads REQUIRED)
结合
target_link_libraries(mytarget PRIVATE Threads::Threads)
是实现目标的更现代的方式,因为您应该对目标执行操作(而不是使用可能影响项目其他部分甚至包含拼写问题的 'magic' 变量)。

参见:https://codingnest.com/basic-cmake-part-2/

将此添加到 CMakeLists 对我来说效果很好:

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