我正在尝试用CMake制作一个Visual Studio解决方案来编译最新版本的aseprite并且CMake一直给我:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
Run Code Online (Sandbox Code Playgroud)
我已经下载了GCC,我正在使用Visual Studio 2015.
我正在学习本教程:
我有这个CMakeLists.txt
文件的问题:
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)
project(cmake_test)
add_executable(a.exe test.cpp)
Run Code Online (Sandbox Code Playgroud)
使用:调用cmake cmake -G "MinGW Makefiles"
,它失败并显示以下输出:
c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C …
Run Code Online (Sandbox Code Playgroud) 这似乎是一个微不足道的问题,因为CMake是一种脚本语言,一般的答案是:严格顺序.但是我遇到了几个案例,其中重要的是CMake在何时或以何种顺序解析某些文件.所以我想知道:
到目前为止我遇到的案例,上述信息很重要:
CMakeLists.txt
文件外部的作用域调用变量监视:在"配置"步骤完成之前,在CMake中执行命令或宏作为最后一步也许你知道更多.
为了找到答案,我尝试了以下内容:我已经设置了一个简单的主CMakeLists.txt,如下所示,并运行cmake --trace …
以分析解析顺序.
cmake_minimum_required(VERSION 2.8)
include(BeforeProjectCmd.cmake)
project(ParserTest CXX)
add_subdirectory(LibTarget1)
add_subdirectory(LibTarget2)
add_executable(ExeTarget Test.cpp)
variable_watch(CMAKE_BACKWARDS_COMPATIBILITY)
Run Code Online (Sandbox Code Playgroud)
然后,当我运行时,cmake --debug-output --trace -G"Visual Studio 12 2013" -DCMAKE_TOOLCHAIN_FILE:FILE_PATH=Toolchain.txt
我得到了一个很长的痕迹,我试图总结:
# Begin try to read
CMakeCache.txt
${CMAKE_BINARY_DIR}/CMakeCache.txt
PreLoad.cmake
${CMAKE_BINARY_DIR}/PreLoad.cmake
# End try to read
? CMakeLists.txt(1): cmake_minimum_required(VERSION 2.8 )
? CMakeLists.txt(3): include(BeforeProjectCmd.cmake )
?
?? BeforeProjectCmd.cmake
?
? CMakeLists.txt(5): project(ParserTest CXX )
?? share/cmake-3.2/Modules/CMakeDetermineSystem.cmake
??
??? Toolchain.txt
?
?? ${CMAKE_PLATFORM_INFO_DIR}/CMakeSystem.cmake
??
??? …
Run Code Online (Sandbox Code Playgroud) 看起来CMake在其视图中已经相当根深蒂固,所有C++源文件应该只有一个CMAKE_CXX_COMPILER.我无法找到一种在每个目标的基础上覆盖它的方法.这使得在单个CMakeLists.txt中混合主机和交叉编译非常困难,内置的CMake工具.
所以,我的问题是:对于同一种语言(即C++)使用多个编译器的最佳方法是什么?
CXX中cmake CMakeLists.txt文件中的"XX"是什么.
它的意义是什么.
为什么CPX文件中的"XX"不是PP?