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
相关产品推荐
相关产品推荐

