CMake Cross Compilation始终为Visual Studio 10构建

时间:2014-05-27 15:36:27

标签: cmake raspberry-pi cross-compiling

我有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构建,如附图所示。enter image description here cmake -D CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../cmake CMAKE_TOOLCHAIN_FILE=../toolchain-rpi.cmake ../都给了我相同的结果。 我的问题是 (1)为什么cmake正在尝试默认构建Visual Studio 2010? (2)使用arm编译器为Raspberry PI交叉编译以避免这样的问题需要注意什么? 感谢

2 个答案:

答案 0 :(得分:1)

我按照link中的所有说明和讨论进行了操作。但RPI的Arm Cross Compiler仅适用于Linux操作系统。所以我的解决方案就是安装了Oracle的VirtualBox。然后在该操作系统中实现所有交叉编译。

答案 1 :(得分:1)

我已经能够在Windows上运行cmake而不生成Visual Studio项目。解决方案是在Windows上安装MinGW,然后使用以下命令生成Makefile:

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

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