'undefined reference to `pthread_create' CLion

I'm trying to compile my program using CLion under Linux (Ubuntu) OS.

My CMake file:

# cmake_minimum_required(VERSION 3.5)
  project(untitled2 C)

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

My pragram using threads so I've added set(CMAKE_CXX_FLAGS -pthread) that required to compile my program. I got a compilation error: "undefined reference to pthread_create"

I can compile the program via the terminal using the following:

gcc main.c -o main -pthread

I think that my issue is with the CMake file. Can someone please help my with that matter ?

Thank you!



Solution 1:[1]

I might still not be the best option but using a call to
find_package(Threads REQUIRED)
in combination with
target_link_libraries(mytarget PRIVATE Threads::Threads)
is the more modern way of getting to your goal because you should perform your actions on a target (instead of using 'magic' variables that could influence other parts of the project or even contain spelling issues).

See: https://codingnest.com/basic-cmake-part-2/

Solution 2:[2]

You have to change set(CMAKE_CXX_FLAGS -pthread) in set(CMAKE_C_FLAGS -pthread), because CXX stay for C++. Hope this will help you.

Solution 3:[3]

Adding this to CMakeLists works fine for me:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 gianluca gabriele
Solution 3 Anass Maourid