我有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交叉编译以避免这样的问题需要注意什么?
感谢
答案 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。