Cmake无法找到包含神秘错误消息的线程包
我正在尝试使用以下CMakeLists.txt进行配置:Cmake无法找到包含神秘错误消息的线程包,cmake,pthreads,Cmake,Pthreads,我正在尝试使用以下CMakeLists.txt进行配置: cmake_minimum_required(VERSION 3.2) project(MotionBlow CXX) find_package(Threads REQUIRED)
cmake_minimum_required(VERSION 3.2)
project(MotionBlow CXX)
find_package(Threads REQUIRED)
find_package(Boost COMPONENTS system program_options REQUIRED)
include(gtest.cmake)
add_executable(motionBlow src/blow.cpp)
target_include_directories(motionBlow PUBLIC include)
target_link_libraries(motionBlow RTIMULib ${Boost_LIBRARIES})
set_property(TARGET motionBlow PROPERTY CXX_STANDARD 14)
add_executable(chat_client src/chat_client.cpp)
target_include_directories(chat_client PUBLIC include)
target_link_libraries(chat_client ${Boost_LIBRARIES} Threads::Threads)
set_property(TARGET chat_client PROPERTY CXX_STANDARD 14)
add_executable(chat_server src/chat_server.cpp)
target_include_directories(chat_server PUBLIC include)
target_link_libraries(chat_server ${Boost_LIBRARIES} Threads::Threads)
set_property(TARGET chat_server PROPERTY CXX_STANDARD 14)
enable_testing()
add_executable(matrixTest test/MatrixTest.cpp src/Matrix.cpp)
target_include_directories(matrixTest PUBLIC include ${GTEST_INCLUDE_DIR})
target_link_libraries(matrixTest ${GTEST_LIBRARY} Threads::Threads)
set_property(TARGET matrixTest PROPERTY CXX_STANDARD 14)
在ubunutu 16.04上它可以正常工作,但在Raspbian 8.0/Cmake 3.6.2的raspberry pi和ubuntu 15.10/Cmake 3.2.2上我都可以看到
CMake Error at /usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:138 (message):
Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
/usr/share/cmake-3.2/Modules/FindPackageHandleStandardArgs.cmake:374 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.2/Modules/FindThreads.cmake:204 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:4 (find_package)
不幸的是,错误日志仅包含以下内容:
Determining if files pthread.h exist failed with the following output:
Source:
/* */
#include <pthread.h>
int main(void){return 0;}
确定文件pthread.h是否存在失败,输出如下:
资料来源:
/* */
#包括
int main(void){返回0;}
所以我不知道怎么把它修好。有什么想法吗?我的CMakelists.txt是否丢失了某些内容,或者我是否应该获得丢失的软件包?使用您的代码,我可能会重现您的错误,这似乎是由此产生的后续错误:
-- Looking for include file pthread.h
CMake Error at /usr/share/cmake-3.2/Modules/CheckIncludeFiles.cmake:74 (try_compile):
Unknown extension ".c" for file
try_compile() works only for enabled languages. Currently these are:
CXX
See project() command to enable other languages.
两种可能的解决办法:
C
添加到项目语言中:
project(MotionBlow C CXX)
list(APPEND CMAKE_CXX_SOURCE_FILE_EXTENSIONS c)
CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
set(CMAKE_USER_MAKE_RULES_OVERRIDE "MotionBlowMakeRulesOverwrite.cmake")
project(MotionBlow CXX)
如果这些都不起作用,请检查是否安装了pthread
:
sudo apt get安装libpthread-stubs0-dev
参考资料