gpt4 book ai didi

c - 如何修复这个 cmake 文件? c 文件忽略它所依赖的 h 文件

转载 作者:行者123 更新时间:2023-11-30 15:03:16 25 4
gpt4 key购买 nike

cmake 文件

cmake_minimum_required(VERSION 3.6)
project(producer)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -pthread")

add_executable(server wrappers.h wrappers.c server.c request.h request.c)

错误信息

`CMakeFiles/server.dir/wrappers.c.o: In function Pthread_create':
/home/user/ClionProjects/producer/wrappers.c:570: undefined reference to `pthread_create'
CMakeFiles/server.dir/wrappers.c.o: In function `Pthread_join':
/home/user/ClionProjects/producer/wrappers.c:645: undefined reference to `pthread_join'
CMakeFiles/server.dir/wrappers.c.o: In function `Pthread_cancel':
/home/user/ClionProjects/producer/wrappers.c:653: undefined reference to `pthread_cancel'
collect2: error: ld returned 1 exit status
make[3]: *** [server] Error 1
make[2]: *** [CMakeFiles/server.dir/all] Error 2
make[1]: *** [CMakeFiles/server.dir/rule] Error 2
make: *** [server] Error 2

wrapper.c 包含wrapper.h,其中包含pthread.h

我忽略了一些显而易见的事情,但我不知道是什么。我尝试了 set、add_library 和 install 命令,但从未得到比这更少错误的输出。

编辑:这是固定文件。

cmake_minimum_required(VERSION 3.6)
project(producer)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g -lpthread")
add_library(wrapper wrapper.h wrapper.c)
add_library(cs537 cs537.h cs537.c)
add_library(request request.h request.c)
add_executable(server server.c)
target_link_libraries(server request wrapper -lpthread)

最佳答案

这是一个链接器错误,您还需要在链接器中直接使用 -pthread:

target_link_libraries(server -lpthread)

或更多跨平台:

set(CMAKE_THREAD_PREFER_PTHREAD ON)
find_package (Threads)
target_link_libraries (server ${CMAKE_THREAD_LIBS_INIT})

关于c - 如何修复这个 cmake 文件? c 文件忽略它所依赖的 h 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40810400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com