Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gcc 在命令行中编译fine时,使用CMakeLists会导致错误_Gcc_Cmake_Posix_Clion - Fatal编程技术网

Gcc 在命令行中编译fine时,使用CMakeLists会导致错误

Gcc 在命令行中编译fine时,使用CMakeLists会导致错误,gcc,cmake,posix,clion,Gcc,Cmake,Posix,Clion,我正在编译我的代码,其中我在C中使用posix线程 我正在使用CLion及其CMakeLists.txt: cmake_minimum_required(VERSION 3.7) project(Test) set(CMAKE_C_STANDARD 99) add_definitions(-lpthread) set(SOURCE_FILES main.c) add_executable(Test ${SOURCE_FILES}) 我收到错误(例如:未定义对sem_init'`的引用)

我正在编译我的代码,其中我在C中使用posix线程

我正在使用CLion及其CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(Test)

set(CMAKE_C_STANDARD 99)
add_definitions(-lpthread)

set(SOURCE_FILES main.c)

add_executable(Test ${SOURCE_FILES})
我收到错误(例如:
未定义对
sem_init'`的引用)

建议的解决方案是添加
-lpthread
编译器标志,但我已经添加了它

我从命令行编译了相同的代码:

gcc main.c -lpthread
它编译起来没有任何问题


什么是可能的问题/解决方案?

完全删除
添加定义(-lpthread)
,因为pthread不是定义,而是库依赖项

添加可执行文件()之后添加:

此外,如果您想在不检查文件的情况下查看CMake正在使用的命令,可以在命令行中使用它,并使用
CMake-DCMAKE\u VERBOSE\u MAKEFILE=on…

顺便说一句,总是喜欢所有的
target.*
命令,比如
target\u compile\u definitions()
,而不是老式的
add\u definitions()
。这将保持项目属性和依赖项的干净,并将不同目标之间的干扰降至最低

如果在上述更改之后,您的代码仍然无法编译,那么代码本身很可能是错误的(与CMake无关)。

可能是重复的
target_link_libraries(Test pthread)