Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CMake中添加对新编译器供应商的支持(交叉编译)_Cmake_Cross Compiling_Cmake Modules - Fatal编程技术网

在CMake中添加对新编译器供应商的支持(交叉编译)

在CMake中添加对新编译器供应商的支持(交叉编译),cmake,cross-compiling,cmake-modules,Cmake,Cross Compiling,Cmake Modules,我想使用toolchain和CMake交叉编译一个嵌入式应用程序(3.16还可以) 我从一个完整的工具链文件开始,其中指定了二进制文件和规则的所有路径,但随后我阅读并使用编译器/IAR*脚本作为示例()以更简洁的方式结束 我知道,默认情况下,在C/CXX项目中,CMake尝试编译一个简单的测试程序CMakeCCompilerId.C,以检测编译器id供应商和版本。我创建了自己的任务确定编译器.cmake,它将使用ctc编译器定义的符号。但是,即使该文件由CMake执行(检测到其中的语法错误),它

我想使用toolchain和CMake交叉编译一个嵌入式应用程序(3.16还可以)

我从一个完整的工具链文件开始,其中指定了二进制文件和规则的所有路径,但随后我阅读并使用
编译器/IAR*
脚本作为示例()以更简洁的方式结束

我知道,默认情况下,在C/CXX项目中,CMake尝试编译一个简单的测试程序
CMakeCCompilerId.C
,以检测编译器id供应商和版本。我创建了自己的
任务确定编译器.cmake
,它将使用ctc编译器定义的符号。但是,即使该文件由CMake执行(检测到其中的语法错误),它似乎对生成的测试源文件没有任何影响

这意味着编译器标识的默认机制不适用于我的编译器,我得到消息“C编译器标识未知”。在我的工具链文件中,我需要强制标识:

set(CMAKE_SYSTEM_NAME Generic)
# will load Platform/Generic.cmake under CMAKE_MODULE_PATH

# Normalize, convert Windows backslashes to forward slashes or CMake will crash
get_filename_component(TASKING_ROOT_PATH "$ENV{TASKING_TRICORE_PATH}" ABSOLUTE)

# Specify the compiler
# will load Platform/Generic-ctc.cmake CMAKE_MODULE_PATH
foreach (_prefix C CXX)
    if ("${CMAKE_${_prefix}_COMPILER}" STREQUAL "")
        set(CMAKE_${_prefix}_COMPILER "${TASKING_ROOT_PATH}/bin/cctc.exe")
    endif()
  # This is used only if we skip auto compiler identification
  set(CMAKE_${_prefix}_COMPILER_ID "Tasking")
  set(CMAKE_${_prefix}_COMPILER_VERSION "6.3.1r1")
  # Skip compiler ID identification: use "Tasking"
  set(CMAKE_${_prefix}_COMPILER_ID_RUN TRUE)
  set(CMAKE_${_prefix}_COMPILER_FORCED TRUE)
endforeach()

# will load Compiler/Tasking.cmake under CMAKE_MODULE_PATH
# and Compiler/Tasking-FindBinUtils.cmake as well
到目前为止,这是可行的,但我想了解是否可以使用默认的CMake方法来标识编译器id和版本。我找不到如何在文档中添加其他供应商

非常感谢