【问题标题】:CMake Cross Compilation always build for Visual Studio 10CMake 交叉编译始终为 Visual Studio 10 构建
【发布时间】:2014-05-27 15:36:27
【问题描述】:

我有a similar query 并关闭它,因为我认为它有效。其实我还是有问题。所以我在一个新线程中发布。我的 CMake 始终为 Visual Studio 2010 构建。我正在为 Raspberry PI 进行交叉编译,我的工具链文件如下。

SET(CMAKE_SYSTEM_NAME Linux) # this one is important
SET(CMAKE_SYSTEM_VERSION 1)  # this one not so much

SET(CMAKE_C_COMPILER   C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_AR           C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-ar)
SET(CMAKE_LINKER       C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-ld)
SET(CMAKE_NM           C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-nm)
SET(CMAKE_OBJCOPY      C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-objcopy)
SET(CMAKE_OBJDUMP      C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-objdump)
SET(CMAKE_STRIP       C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-strip)
SET(CMAKE_RANLIB       C:/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-tanlib)

# where is the target environment 
SET(CMAKE_FIND_ROOT_PATH  C:/ThitSan_Backup/RasberryPI/rpi/helloWorld)

# 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 时,它​​会为 Visual Studio 2010 构建,如附图所示。 cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../cmake CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../ 都给了我相同的结果。 我的问题是
(1) 为什么 cmake 在默认情况下会尝试为 Visual Studio 2010 构建?
(2) 使用 arm 编译器为 Raspberry PI 进行交叉编译以避免此类问题需要注意哪些事项? 谢谢

【问题讨论】:

  • 尝试删除-D 之后的空格(有关详细信息,请参阅this answer)。
  • 我想,还是一样。今晚让我试试。
  • 很抱歉最初的问题stackoverflow.com/questions/23856544/… 不令人满意。您本可以不接受我的回答,然后编辑您的问题以使其更准确。那本来就很好。
  • @lrineau 非常感谢。我编辑了我的查询,以便更具体地了解我想知道的内容。
  • @lrineau 我在 Windows 7 操作系统中,我将环境路径设置为 C:\arm-bcm2708\gcc-linaro-arm-linux-gnueabihf-raspbian\bin。但是当我在命令窗口以 arm-linux-gnueabihf-gcc -v 测试它时。它被抱怨为“arm-linux-gnueabihf-gcc”无法识别。我认为这是问题所在。

标签: cmake raspberry-pi cross-compiling


【解决方案1】:

我遵循了link 中的所有说明和讨论。但是用于 RPI 的 Arm 交叉编译器仅适用于 Linux 操作系统。所以我的解决方案是我安装了 Oracle 的 VirtualBox。然后在那个操作系统中实现所有的交叉编译。

【讨论】:

    【解决方案2】:

    我已经能够在 Windows 上运行 cmake 而无需生成 Visual Studio 项目。解决方法是在Windows上安装MinGW,然后使用如下命令生成Makefiles:

    cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ..
    

    最后,生成了名为 Makefile 的文件,而不是 Visual Studio 项目。请确保您的 PATH 环境变量中没有其他 sh.exe。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2019-05-18
      • 2019-07-06
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多