相关疑难解决方法(0)

如何为CMake指定新的GCC路径

我的操作系统是centos,它在路径中有一个默认的gcc /usr/bin/gcc.但它已经老了,我需要一个新版本的gcc.所以我在新路径中安装了新版本/usr/local/bin/gcc.

但是当我运行时cmake,它仍然使用旧版本的gcc path(/usr/bin/gcc).如何将gcc指定为新路径(/usr/local/bin/gcc).

我试图覆盖/usr/bin/gcc/usr/local/bin/gcc,但它不能正常工作.

gcc cmake

101
推荐指数
4
解决办法
14万
查看次数

无法使用CMake指定编译器

我有这个CMakeLists.txt文件的问题:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)

project(cmake_test)

add_executable(a.exe test.cpp)
Run Code Online (Sandbox Code Playgroud)

使用:调用cmake cmake -G "MinGW Makefiles",它失败并显示以下输出:

c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C …
Run Code Online (Sandbox Code Playgroud)

gcc mingw cmake

43
推荐指数
2
解决办法
10万
查看次数

CMake:解析文件的顺序(缓存,工具链等)?

这似乎是一个微不足道的问题,因为CMake是一种脚本语言,一般的答案是:严格顺序.但是我遇到了几个案例,其中重要的是CMake在何时或以何种顺序解析某些文件.所以我想知道:

  1. 是否有可用的文档描述解析文件(包括内部CMake文件)的顺序?
  2. 文件顺序是否取决于CMake版本或某些CMake选项/设置/环境incl.选择的发电机或主机环境?

到目前为止我遇到的案例,上述信息很重要:

也许你知道更多.

为了找到答案,我尝试了以下内容:我已经设置了一个简单的主CMakeLists.txt,如下所示,并运行cmake --trace …以分析解析顺序.

cmake_minimum_required(VERSION 2.8)

include(BeforeProjectCmd.cmake)

project(ParserTest CXX)

add_subdirectory(LibTarget1)
add_subdirectory(LibTarget2)

add_executable(ExeTarget Test.cpp)

variable_watch(CMAKE_BACKWARDS_COMPATIBILITY)
Run Code Online (Sandbox Code Playgroud)

然后,当我运行时,cmake --debug-output --trace -G"Visual Studio 12 2013" -DCMAKE_TOOLCHAIN_FILE:FILE_PATH=Toolchain.txt我得到了一个很长的痕迹,我试图总结:

# Begin try to read
CMakeCache.txt
${CMAKE_BINARY_DIR}/CMakeCache.txt
PreLoad.cmake
${CMAKE_BINARY_DIR}/PreLoad.cmake
# End try to read

? CMakeLists.txt(1):  cmake_minimum_required(VERSION 2.8 )
? CMakeLists.txt(3):  include(BeforeProjectCmd.cmake )
?
?? BeforeProjectCmd.cmake
?
? CMakeLists.txt(5):  project(ParserTest CXX )
?? share/cmake-3.2/Modules/CMakeDetermineSystem.cmake
??
??? Toolchain.txt
?
?? ${CMAKE_PLATFORM_INFO_DIR}/CMakeSystem.cmake
??
??? …
Run Code Online (Sandbox Code Playgroud)

cmake

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

使用特定链接器进行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 ×4

gcc ×2

c ×1

cross-compiling ×1

linker ×1

mingw ×1