You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake未添加-pthread编译/链接标志问题排查求助

问题:CMake + Ninja 无法自动添加-pthread编译/链接标志

我尝试通过CMake和Ninja为项目添加编译标志-pthread,参考相关方案后,执行ninja -vv查看编译命令时,发现编译阶段未传入-pthread,链接阶段也未传入-lpthread。

我的CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.27)

project(milter-alias)

set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)

add_executable(
    milter-alias
    src/main.c
)

target_compile_options(milter-alias PRIVATE -Wall -Wextra -pedantic -Werror)
target_compile_features(milter-alias PRIVATE c_std_11)
target_link_libraries(milter-alias PRIVATE milter Threads::Threads)

install(TARGETS milter-alias RUNTIME DESTINATION bin)

执行ninja -vv的输出:

matthias@matthias-pc ~/Entwicklung/milter-alias/build $ ninja -vv
[1/2] /usr/bin/cc   -Wall -Wextra -pedantic -Werror -MD -MT CMakeFiles/milter-alias.dir/src/main.c.o -MF CMakeFiles/milter-alias.dir/src/main.c.o.d -o CMakeFiles/milter-alias.dir/src/main.c.o -c /home/matthias/Entwicklung/milter-alias/src/main.c
[2/2] : && /usr/bin/cc   CMakeFiles/milter-alias.dir/src/main.c.o -o milter-alias  -lmilter && :

我遗漏了什么配置?特别疑惑的是,仅使用target_link_libraries( ... Threads::Threads ...)为何不生效——我原本以为还需要手动配置target_compile_options,但现在连链接阶段的标志都没加上。

环境信息:

  • CMake 3.27.9
  • Ninja 1.11.1
  • GCC 13.2.1

补充信息

cmake执行输出:

matthias@matthias-pc ~/Entwicklung/milter-alias/build $ cmake -G Ninja ..
-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/matthias/Entwicklung/milter-alias/build

内容的提问来源于stack exchange,提问作者user2690527

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:05:38