【问题标题】:CMake toolchain file won't use my custom CFLAGSCMake 工具链文件不会使用我的自定义 CFLAGS
【发布时间】:2013-11-08 19:21:30
【问题描述】:

我需要编写一个工具链文件来在我的构建系统上配置特殊的编译器前缀和 CFLAGS。我正在尝试使用 CMake,但我遇到了困难。

这是我的 toolchain.cmake 文件的示例:

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CROSSCOMPILING TRUE)
set(COMPILER_PREFIX sh4)
set(USER_ROOT_PATH /opt/st40)
set(CMAKE_FIND_ROOT_PATH ${USER_ROOT_PATH})
find_program(CMAKE_C_COMPILER NAMES ${COMPILER_PREFIX}gcc)
find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}g++)
find_program(CMAKE_AR NAMES ${COMPILER_PREFIX}ar)
find_program(CMAKE_RANLIB NAMES ${COMPILER_PREFIX}ranlib)
set(CMAKE_C_FLAGS "-mruntime=os21 -mboard=board_custom003024_map256_se -specs=lib/custom003024_h205_board.mem")

但我在编译器检查期间收到此错误:

  Building C object
  CMakeFiles/cmTryCompileExec2889774418.dir/testCCompiler.c.obj

  /opt/st40/bin/sh4gcc -o
  CMakeFiles/cmTryCompileExec2889774418.dir/testCCompiler.c.obj -c
  /project/cmake/build/CMakeFiles/CMakeTmp/testCCompiler.c


  Linking C executable cmTryCompileExec2889774418

  /usr/bin/cmake -E cmake_link_script
  CMakeFiles/cmTryCompileExec2889774418.dir/link.txt --verbose=1

  /opt/st40/bin/sh4gcc
  CMakeFiles/cmTryCompileExec2889774418.dir/testCCompiler.c.obj -o
  cmTryCompileExec2889774418

  sh4gcc: -mboard undefined

  gmake[1]: Leaving directory
  `/project/cmake/build/CMakeFiles/CMakeTmp'

在 CMakeCache.txt 上,我可以看到以下变量:

//Flags used by the compiler during all build types.
CMAKE_C_FLAGS:STRING=

如您所见,它没有在 sh4gcc 调用中使用 CMAKE_C_FLAGS 变量。我在这里错过了什么?

【问题讨论】:

    标签: build cmake


    【解决方案1】:

    我在另一个问题中找到了解决方法。似乎如果我在工具链文件中设置 CMAKE_C_FLAGS 如下:

    set(CMAKE_C_FLAGS "-mruntime=os21 -mboard=board_custom003024_map256_se -specs=lib/custom003024_h205_board.mem" CACHE STRING "" FORCE)
    

    它的工作方式也符合我的预期。这似乎没有任何奇怪的副作用。

    【讨论】:

    猜你喜欢
    • 2016-09-18
    • 2018-09-20
    • 1970-01-01
    • 2021-10-31
    • 2013-09-13
    • 2021-06-12
    • 2019-01-28
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多