c++ - FindThreads 仅在启用 C 或 CXX 语言时才有效
问题描述
我正在尝试构建一个可移植的 gcc,以允许其他人使用不同的系统进行编译。
我曾经crosstool-ng
交叉编译gcc-8.2
,x86_64
我建立了一个静态工具链。
我创建了以下工具链文件:
#set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(QAMF_ROOT "/opt/hyperserver-dev/x86_64-qamf")
set(COMPILER_ROOT "${QAMF_ROOT}")
set(COMPILER_PREFIX "x86_64-qamf-linux-gnu-")
set(C_COMPILER "gcc")
set(CXX_COMPILER "g++")
# specify the cross compile
set(CMAKE_C_COMPILER ${COMPILER_ROOT}/bin/${COMPILER_PREFIX}${C_COMPILER} )
set(CMAKE_CXX_COMPILER ${COMPILER_ROOT}/bin/${COMPILER_PREFIX}${CXX_COMPILER} )
# HyperServer sysroot path
set(HYPERSERVER_SYSROOT "${COMPILER_ROOT}/x86_64-qamf-linux-gnu/sysroot")
# where is the target environment
set(CMAKE_FIND_ROOT_PATH ${HYPERSERVER_SYSROOT} )
# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
在我的主机上它工作得很好,我可以毫无问题地编译,但是当我将工具链文件移动到另一台机器上时,我遇到了问题。如果我尝试在我的 cmake 中包含线程,则会出现以下错误:
CMake Error at /usr/local/share/cmake-3.13/Modules/FindThreads.cmake:54 (message):
FindThreads only works if either C or CXX language is enabled
Call Stack (most recent call first):
CMakeLists.txt:2 (find_package)
-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found. Stop.
这是我的 CMakeFiles/txt
cmake_minimum_required(VERSION 3.9)
find_package(Threads REQUIRED)
project(HelloWorld C CXX)
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
解决方案
地方
find_package(Threads REQUIRED)
后
project(HelloWorld C CXX)
这就是错误消息所说的:project()
调用启用语言,因此找到线程会成功。
通常,所有 find_package
呼叫都应在呼叫之后project()
。
推荐阅读
- excel - 如何在Excel VBA中动态地寻找多行目标
- java - Java Jackson 序列化抽象类列表
- image - 在 Matlab 中获取具有优化字体大小和居中的文本图像?
- spring-cloud-contract - 如何使用 Spring Cloud Contract 仅验证微服务返回的 JSON 签名(不是值)
- html - CSS淡入/淡出背景图像显示空白最后一个图像
- linkedin - 我缺少什么 LinkedIn API 权限来获取组织目标名称?
- python - 如何在使用 SUMO/TraCI 时设置 http 服务器
- ios - Gif 没有出现在手动输入的约束上
- python - Flask - 从 python 函数返回一个 url 到 html 模板
- npm - 全局安装具有对等依赖关系的 npm 包(package.json 中未提及)