相关疑难解决方法(0)

CMake 错误:在 Windows 上执行 make 失败

尝试在 Windows 7 中构建nanomsg 项目时出现错误:

cmake ..
-- Building for: NMake Makefiles
-- The C compiler identification is GNU 4.7.1
-- Check for working C compiler: C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe
CMake Error: Generator: execution of make failed. Make command was: "nmake" "/NOLOGO" "cmTC_5d837\fast"
-- Check for working C compiler: C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe -- broken
CMake Error at C:/Program Files (x86)/cmake-3.9.4-win64-x64/share/cmake-3.9/Modules/CMakeTestCCompiler.cmake:51 (message):
The C compiler "C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe" is not
able to compile a simple test program.

It fails with …
Run Code Online (Sandbox Code Playgroud)

mingw cmake nanomsg

8
推荐指数
1
解决办法
8773
查看次数

如何在CMake中指定编译器?

我想使用IAR编译器.我注意到CMake已经有一堆关于这个编译器的文件:

https://github.com/jevinskie/cmake/blob/master/Modules/Compiler/IAR.cmake

从我读到的常见解决方案是手动指定我的所有工具链CMakeLists.txt:

set(CMAKE_C_COMPILER iccarm)
set(CMAKE_CPP_COMPILER iccarm)
Run Code Online (Sandbox Code Playgroud)

CMake如何将这些定义与`Modules/Compiler/IAR.cmake"联系起来?

我以为我只需要这样做

include("Modules/Compiler/IAR.cmake")
Run Code Online (Sandbox Code Playgroud)

指定IAR编译器的正确方法是什么?

当我做

cmake .
Run Code Online (Sandbox Code Playgroud)

它仍然试图使用gcc而不是我的IAR编译器.为什么?

cmake iar

7
推荐指数
4
解决办法
9970
查看次数

使用特定链接器进行CMake交叉编译不会将参数传递给armlink

我正在尝试交叉编译嵌入式ARM Cortex构建的项目,但我无法使链接器正常工作.我想使用armlink,但没有文件传递给armlink,因此没有生成.elf文件.

我的CMakeLists.txt非常简单,如下所示.之后显示失败,表明makefile在没有任何参数的情况下调用了armlink.

任何指针都会有所帮助 - 我搜索并阅读了很多帖子,但他们似乎都有更多的参与要求.

cmake_minimum_required(VERSION 2.8)

project(test_arm)
enable_language(C ASM)

# Cross-compilation for ARM
SET(CMAKE_C_COMPILER armcc)
SET(CMAKE_LINKER armlink)
SET(CMAKE_C_LINK_EXECUTABLE armlink)

SET(CMAKE_C_FLAGS "--cpu=Cortex-M3")
SET(LINK_FLAGS "--map --ro-base=0x0 --rw-base=0x0008000 --first='boot.o(RESET)' --datacompressor=off")
SET(CMAKE_EXE_LINKER_FLAGS "--map --ro-base=0x0 --rw-base=0x0008000 --first='boot.o(RESET)' --datacompressor=off")

include_directories(../include)

add_executable(blinky blinky.c)
set_target_properties(blinky PROPERTIES LINKER_LANGUAGE C)
Run Code Online (Sandbox Code Playgroud)

失败如下,但我想对于我的CMakeLists中有一些愚蠢问题的人来说很明显:

$ make VERBOSE=1
[100%] Building C object CMakeFiles/blinky.dir/blinky.c.o
/usr/bin/cmake -E cmake_link_script CMakeFiles/blinky.dir/link.txt --verbose=1
armlink
Linking C executable blinky
Product: DS-5 Professional 5.21.0 [5210017]
Component: ARM Compiler 5.05 update 1 (build 106)
Tool: armlink [4d0efa]
For support see …
Run Code Online (Sandbox Code Playgroud)

c linker cmake cross-compiling

6
推荐指数
1
解决办法
5316
查看次数

如何使用CMake使用MinGW构建软件包?

我正在尝试从ECMWF构建一些名为ECCODES的软件。

  • 它可以在GNU / Linux上很好地构建。
  • 它在Mac OS X上构建良好。
  • 它在Windows / Cygwin上构建良好。
  • 不幸的是(糟糕!),我必须使用Windows,而我不能使用Cygwin。
  • 我必须使用类似MinGW的东西。

构建说明使用CMake。我不是CMake的专家。我所在的Windows系统具有:

  • cygwin64
  • mingw64
  • 基本的Visual Studio 14

我已经尝试了CMake变量/选项的所有方法和替代方法:

-DCMAKE_C_COMPILER=... \
-DCMAKE_CXX_COMPILER=... \
-DCMAKE_Fortran_COMPILER=... \
-DCMAKE_MAKE_PROGRAM=... \
-G ...
Run Code Online (Sandbox Code Playgroud)

获得使用MinGW构建ECCODES的机会,但是没有运气。我知道有人会问:“为什么不联系ECMWF?” 简短的答案是,响应时间非常长(月/年)。FAQ页面为空,您不能在其Jira网站(已锁定)上发布问题。

熟悉CMake和MinGW的人是否可以下载.tar.gz,使用MinGW构建ECCODE并告诉我们您如何做?

http://www.ecmwf.int/

https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home

https://software.ecmwf.int/wiki/download/attachments/45757960/eccodes-0.13.0-Source.tar.gz?api=v2

cmake mingw32 mingw-w64

6
推荐指数
0
解决办法
5799
查看次数

如何获得 CMake 的详细输出?

我想调查一下为什么会出现这个错误:

$ cmake ..
-- The C compiler identification is unknown
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /cygdrive/c/Users/Ycr/Home/bin/arm-none-eabi-gcc
-- Check for working C compiler: /cygdrive/c/Users/Ycr/Home/bin/arm-none-eabi-gcc -- broken
CMake Error at /usr/share/cmake-3.6.2/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "/cygdrive/c/Users/Ycr/Home/bin/arm-none-eabi-gcc" is not
  able to compile a simple test program.
Run Code Online (Sandbox Code Playgroud)

不幸的是,错误发生后:

  • 我不知道 CMake 做了什么。我没有它执行的命令的详细日志。
  • 错误发生后已CMakeFiles/cmTC_e4aa4.dir被清理,因此我无法自己探索该问题。

我应该如何调查这样的错误?

我尝试使用该--debug-trycompile选项。这次 CMake 创建了一个CMakeTmp文件夹,完美无误。但是,我仍然有这个CMakeFiles/cmTC_e4aa4.dir生成错误,甚至使用 CMake 选项取消文件夹链接。

cmake

6
推荐指数
1
解决办法
1万
查看次数

CMAKE:“找不到 CMAKE_CXX_COMPILER。”

我有一个简单的项目,其中文件结构如下所示:

- CMakeLists.txt
- main.cpp
Run Code Online (Sandbox Code Playgroud)

看起来CMakeLists.txt像这样:

# Project initialization
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
add_executable(Tutorial main.cpp)
Run Code Online (Sandbox Code Playgroud)

当我运行 Cmake GUI 时,我得到:

CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_CXX_COMPILER could be found.
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我安装了 Microsoft Visual Studio 2017。我已经编译并运行了它的应用程序。CMAKE 教程中的基本示例不起作用。

谁能告诉我为什么?

c++ cmake

6
推荐指数
2
解决办法
1万
查看次数

CMake和Make需要运行两次才能成功构建代码

我在C ++ 14项目中使用CMake 3.8.2,GNU make 4.2.1和GCC 6.4.0,在构建时我注意到了一个奇怪的行为。我使用CMake在名为“ build”的子文件夹中进行源代码外构建,cmake ..然后运行make

CMake运行良好,没有任何错误,make会像我期望的那样构建所有源文件,直到完成编译并开始链接它们为止。然后它将失败并显示错误

[ 83%] ...
[100%] Linking CXX executable myproject
/usr/bin/ld: some-source-file.cc.o: undefined reference to symbol '_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.21'
Run Code Online (Sandbox Code Playgroud)

有趣的是,到目前为止,它不显示任何编译器警告,而仅显示上述链接器错误。

现在,当我忽略该错误并简单地运行cmake ..,然后make再次运行(就像我之前所做的那样)时,即使我没有更改任何代码或与CMake相关的文件,我也会得到我的代码应产生的所有编译器警告,并且所有链接都可以正常运行同时。

我可以build通过运行删除目录中的所有文件来重现此行为rm -r *

这是我的CMakeLists.txt文件:

# Define minimum required CMake version
cmake_minimum_required(VERSION 3.8.2)

# Setting compiler related settings
set(CMAKE_CXX_COMPILER "${CMAKE_SOURCE_DIR}/toolchain/binary/gcc-6.4.0/bin/gcc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wconversion -O2 -lstdc++")
set(CMAKE_CXX_STANDARD 14)

# Define project name
project(MyProject)

# Find source files
file(GLOB_RECURSE …
Run Code Online (Sandbox Code Playgroud)

c++ gcc cmake gnu-make

5
推荐指数
1
解决办法
1833
查看次数

Cmake错误设置编译器

出于某种原因,CMake的C和C++编译器默认设置为/usr/bin/qcc.我已经按照这篇文章尝试了这个命令

cmake -D CMAKE_C_COMPILER =/usr/bin/gcc -D CMAKE_CXX_COMPILER =/usr/bin/g ++

但我得到了错误

CMake错误:源目录[当前目录]/CMAKE_CXX_COMPILER =/usr/bin/g ++"不存在.

为什么CMake将我的命令解释为目录,设置CMake编译器的正确方法是什么?

linux cmake

4
推荐指数
1
解决办法
9145
查看次数

在 Windows 下使用通过 MSYS2 安装的 cmake 3.5.2,缺少“MinGW Makefiles”生成器

我正在尝试一个 hello world 测试来在 Windows 下制作 cmake,使用 MinGW 作为编译器。 此答案建议cmake使用以下-G标志运行:

 cmake -G "MinGW Makefiles" .
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我会收到一条消息,说那不是已知的生成器。实际上,运行cmake --help,在Generators部分下列出了以下生成器:

在此处输入图片说明

如您所见,未列出“MinGW Makefiles”。

如果这是相关的,我已经安装了 MinGW 并在我的系统上的常用文件夹中工作C:\MinGW。我还通过 WinBuilds 和 MSYS2 安装了 MinGW-w64,同样在默认安装文件夹中。我正在使用cmake version 3.5.2,通过 MSYS2 安装。

为什么“MinGW Makefiles”没有在生成器中列出?

windows mingw cmake

1
推荐指数
1
解决办法
1万
查看次数

CMAKE没有规则成为内部共享库的目标

我编写了一个cmake文件,该文件构建了两个共享库vector3.c和matrix4.c。matrix4依赖于vector3,如果我运行cmake项目并仅构建vector3共享库,则当我添加matrix4库我收到一个cmake错误。没有规则可以成为目标。

文件夹结构

core_math
 ------CMakeLists.txt
-common/
 ------common_structs.h
-matrix4/
 ------CMakeLists.txt
 ------matrix4/src/matrix4_scalar.c
 ------matrix4/headers/matrix4_scalar.h
-vector3/
-------CMakeLists.txt
-------vector3/src/vector3_scalar.c
-------vector3/headers/vector3_scalar.h
Run Code Online (Sandbox Code Playgroud)

core_math / CMakeLists.txt

PROJECT(core_math)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

ADD_SUBDIRECTORY(vector3_scalar)
ADD_SUBDIRECTORY(matrix4_scalar)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/static_lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/shared_lib)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY $(CMAKE_BINARY_DIR)/bin)

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
Run Code Online (Sandbox Code Playgroud)

core_math / vector3 / CMakeLists.txt

PROJECT(vector3_scalar)
SET(CMAKE_MACOSX_RPATH 1)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../common)

SET(HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../common/common_structs.h) 
SET(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/vector3_scalar.c ${HEADER_FILES})

ADD_LIBRARY(vector3_scalar SHARED ${SRC_FILES})
Run Code Online (Sandbox Code Playgroud)

core_math / matrix4_scalar / CMakeLists.txt

PROJECT(matrix4_scalar)
SET(CMAKE_MACOSX_RPATH 1)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../common 
    ${CMAKE_CURRENT_SOURCE_DIR}/../vector3_scalar)


SET(HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../common/common_structs.h
    ${CMAKE_CURRENT_SOURCE_DIR}/../vector3_scalar/headers/vector3_scalar.h
    ${CMAKE_CURRENT_SOURCE_DIR}/headers/matrix4_scalar.h)
SET(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/matrix4_scalar.c ${HEADER_FILES})

ADD_LIBRARY(matrix4_scalar SHARED ${SRC_FILES})

TARGET_LINK_LIBRARIES(matrix4_scalar vector3_scalar)
Run Code Online (Sandbox Code Playgroud)

建立错误

-- Build files have been written to: /Users/blubee/MATH/project/build
Scanning dependencies …
Run Code Online (Sandbox Code Playgroud)

c cmake shared-libraries libraries

0
推荐指数
1
解决办法
7652
查看次数