在构建项目中使用cmake生成错误

时间:2020-07-17 21:33:54

标签: c++ cmake

尝试构建项目时,出现此错误: 用/代替\无效。 在此问题出现之前,Cmake并未检测到C和CXX编译器 我试图重新安装Cmake,修改CMakeCache.txt,但没有任何效果。 有提示吗?


C:\Users\TheSu\Desktop\gta3sc-master\build>cmake ..
CMake Error at CMakeFiles/3.18.0/CMakeCCompiler.cmake:1 (set):
  Syntax error in cmake code at

    C:/Users/TheSu/Desktop/gta3sc-master/CMakeFiles/3.18.0/CMakeCCompiler.cmake:1

  when parsing string

    C:\MinGW\bin\mingw32-gcc.exe

  Invalid escape sequence \M
Call Stack (most recent call first):
  CMakeLists.txt:2 (project)


CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "C:/Users/TheSu/Desktop/gta3sc-master/CMakeFiles/CMakeOutput.log".
See also "C:/Users/TheSu/Desktop/gta3sc-master/CMakeFiles/CMakeError.log".

C:\Users\TheSu\Desktop\gta3sc-master\build>

CMakeLists.txt:

project(gta3sc)

include(deps/CMake/PrecompiledHeader.cmake)
include(deps/CMake/GetGitRevisionDescription.cmake)

if(NOT CMAKE_COMPILER_IS_GNUXX AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  set(CMAKE_COMPILER_IS_GNUXX 1)
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  set(CMAKE_COMPILER_IS_CLANGXX 1)
endif()

if(CMAKE_COMPILER_IS_GNUXX OR CMAKE_COMPILER_IS_CLANGXX)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z")
endif()

if(CMAKE_COMPILER_IS_GNUXX)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-placement-new")
endif()

if(CMAKE_COMPILER_IS_CLANGXX)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses-equality -Wno-tautological-compare")
endif()

if(MSVC)
    # MSVC ITERATOR_DEBUG_LEVEL=2 breaks expected-lite
    add_definitions(-D_ITERATOR_DEBUG_LEVEL=0)

    # Fix some weird linker error on Debug builds
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Ob1")

    # Static link the CRT on release
    foreach(flag_var CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO)
        string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
    endforeach(flag_var)
    if(NOT CMAKE_CXX_FLAGS_RELEASE MATCHES "/MT")
        set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
    endif()
    if(NOT CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "/MT")
        set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
    endif()

endif(MSVC)

include_directories(
  src
  deps
  deps/rapidxml
  deps/cppformat
  deps/optional/include
  deps/expected/include
  deps/any/include
  deps/variant/include
)

add_library(cppformat
  deps/cppformat/cppformat/format.cc
)

set(GTA3SC_SRC_MAIN
  src/stdinc.h
  src/stdinc.cpp
  src/cdimage.hpp
  src/binary_fetcher.hpp
  src/binary_writer.hpp
  src/annotation.hpp
  src/codegen.hpp
  src/codegen.cpp
  src/config.cpp
  src/commands.cpp
  src/commands.hpp
  src/compiler.hpp
  src/compiler.cpp
  src/decompiler_ir2.hpp
  src/disassembler.hpp
  src/disassembler.cpp
  src/main.cpp
  src/main_compile.cpp
  src/main_decompile.cpp
  src/parser_lexer.cpp
  src/parser_syntax.cpp
  src/parser.hpp
  src/program.cpp
  src/program.hpp
  src/symtable.cpp
  src/symtable.hpp
  src/script.hpp
  src/script.cpp
  src/system.cpp
  src/system.hpp
)

set(GTA3SC_SRC_MISC
  src/cpp/any.hpp
  src/cpp/argv.hpp
  src/cpp/contracts.hpp
  src/cpp/file.hpp
  src/cpp/filesystem.hpp
  src/cpp/icompare.hpp
  src/cpp/optional.hpp
  src/cpp/scope_guard.hpp
  src/cpp/variant.hpp
  src/cpp/string_view.hpp
  src/cpp/small_vector.hpp
)

set(GTA3SC_SRC_GITSHA1 "${CMAKE_CURRENT_BINARY_DIR}/git-sha1.cpp")

add_executable(gta3sc ${GTA3SC_SRC_GITSHA1} ${GTA3SC_SRC_MISC} ${GTA3SC_SRC_MAIN})
source_group("autogen" FILES ${GTA3SC_SRC_GITSHA1})
source_group("cpp" FILES ${GTA3SC_SRC_MISC})
source_group("" FILES ${GTA3SC_SRC_MAIN})

target_link_libraries(gta3sc cppformat)

if(CMAKE_COMPILER_IS_GNUXX OR CMAKE_COMPILER_IS_CLANGXX)
  target_link_libraries(gta3sc stdc++fs)
endif()

if(MSVC) # idk how to setup this in GCC/Clang
    add_precompiled_header(gta3sc stdinc.h SOURCE_CXX src/stdinc.cpp)
endif(MSVC)

add_definitions(-DGTA3SC_USING_GIT_DESCRIBE)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
git_describe_long_exact(GIT_DESCRIBE_TAG)
git_branch(GIT_BRANCH)
if(GIT_DESCRIBE_TAG MATCHES "NOTFOUND")
    set(GIT_DESCRIBE_TAG "")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/git-sha1.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/git-sha1.cpp" @ONLY)

add_custom_command(TARGET gta3sc POST_BUILD
                   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/config $<TARGET_FILE_DIR:gta3sc>/config)

#install(TARGETS gta3sc RUNTIME DESTINATION bin)

CMakeCache.txt:

# For build in directory: c:/Users/TheSu/Desktop/gta3sc-master
# It was generated by CMake: C:/Program Files/CMake/bin/cmake.exe
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.

########################
# EXTERNAL cache entries
########################

//Path to a program.
CMAKE_ADDR2LINE:FILEPATH=C:/MinGW/bin/addr2line.exe

//Path to a program.
CMAKE_AR:FILEPATH=C:/MinGW/bin/ar.exe

//No help, variable specified on the command line.
CMAKE_CXX_COMPLIER:UNINITIALIZED=C:\MinGW\bin\mingw32-gcc-6.3.0.exe

//No help, variable specified on the command line.
CMAKE_C_COMPILER:UNINITIALIZED=C:\MinGW\bin\mingw32-gcc.exe

//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_AR:FILEPATH=C:/MinGW/bin/mingw32-gcc-ar.exe

//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_C_COMPILER_RANLIB:FILEPATH=C:/MinGW/bin/mingw32-gcc-ranlib.exe

//Path to a program.
CMAKE_DLLTOOL:FILEPATH=C:/MinGW/bin/dlltool.exe

//Path to a program.
CMAKE_LINKER:FILEPATH=C:/MinGW/bin/ld.exe

//Program used to build from makefiles.
CMAKE_MAKE_PROGRAM:STRING=nmake

//Path to a program.
CMAKE_NM:FILEPATH=C:/MinGW/bin/nm.exe

//Path to a program.
CMAKE_OBJCOPY:FILEPATH=C:/MinGW/bin/objcopy.exe

//Path to a program.
CMAKE_OBJDUMP:FILEPATH=C:/MinGW/bin/objdump.exe

//Value Computed by CMake
CMAKE_PROJECT_DESCRIPTION:STATIC=

//Value Computed by CMake
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=

//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=gta3sc

//Path to a program.
CMAKE_RANLIB:FILEPATH=C:/MinGW/bin/ranlib.exe

//Path to a program.
CMAKE_READELF:FILEPATH=C:/MinGW/bin/readelf.exe

//Path to a program.
CMAKE_STRIP:FILEPATH=C:/MinGW/bin/strip.exe

//No help, variable specified on the command line.
MAKE_CXX_COMPILER:UNINITIALIZED=C:/MinGW/bin/c++.exe

//Value Computed by CMake
gta3sc_BINARY_DIR:STATIC=C:/Users/TheSu/Desktop/gta3sc-master

//Value Computed by CMake
gta3sc_SOURCE_DIR:STATIC=C:/Users/TheSu/Desktop/gta3sc-master


########################
# INTERNAL cache entries
########################

//ADVANCED property for variable: CMAKE_ADDR2LINE
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=c:/Users/TheSu/Desktop/gta3sc-master
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=18
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=0
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cmake.exe
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cpack.exe
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/CMake/bin/ctest.exe
//ADVANCED property for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_DLLTOOL
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
//Path to cache edit program executable.
CMAKE_EDIT_COMMAND:INTERNAL=C:/Program Files/CMake/bin/cmake-gui.exe
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator.
CMAKE_GENERATOR:INTERNAL=NMake Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=C:/Users/TheSu/Desktop/gta3sc-master
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_NM
CMAKE_NM-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJCOPY
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJDUMP
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_READELF
CMAKE_READELF-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=C:/Program Files/CMake/share/cmake-3.18
//ADVANCED property for variable: CMAKE_STRIP
CMAKE_STRIP-ADVANCED:INTERNAL=1

我应该尝试安装另一个版本的CMake吗?坏了吗?

0 个答案:

没有答案