如何使用CMAKLIST设置XCODE项目的C++语言 < C++ > C++ C++语言,我使用CGEAR生成XCODE项目,在其构建设置中,C++语言方言和C++标准库设置是编译器缺省值,但是我想将C++语言方言设置为GNU+++ 11 [-STD= GNU+11 ],并将C++标准库设置为具有C++ 11支持的LBC++LLVM C++标准库,那么我应该修改CMAKELIST? 顺便说一下,此项目用于创建IOS.a文件,我尝试了此命令行,但失败: if(NOT ${CMAKE_VERSION} VERSION_LESS "3.2" AND NOT APPLE) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) else() message(STATUS "Checking compiler flags for C++11 support.") # Set C++11 support flags for various compilers include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11) check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) message(STATUS "C++11 is supported.") if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() elseif(COMPILER_SUPPORTS_CXX0X) message(STATUS "C++0x is supported.") if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() endif()
以下是我的简历:如何使用CMAKLIST设置XCODE项目的C++语言 < C++ > C++ C++语言,我使用CGEAR生成XCODE项目,在其构建设置中,C++语言方言和C++标准库设置是编译器缺省值,但是我想将C++语言方言设置为GNU+++ 11 [-STD= GNU+11 ],并将C++标准库设置为具有C++ 11支持的LBC++LLVM C++标准库,那么我应该修改CMAKELIST? 顺便说一下,此项目用于创建IOS.a文件,我尝试了此命令行,但失败: if(NOT ${CMAKE_VERSION} VERSION_LESS "3.2" AND NOT APPLE) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) else() message(STATUS "Checking compiler flags for C++11 support.") # Set C++11 support flags for various compilers include(CheckCXXCompilerFlag) check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11) check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) message(STATUS "C++11 is supported.") if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() elseif(COMPILER_SUPPORTS_CXX0X) message(STATUS "C++0x is supported.") if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") endif() else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() endif(),xcode,cmake,Xcode,Cmake,以下是我的简历: cmake_minimum_required(VERSION 2.8) project(Navigation C CXX) if(NOT ${CMAKE_VERSION} VERSION_LESS "3.2" AND NOT APPLE) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) else() message(STATUS "Checking compiler flag
cmake_minimum_required(VERSION 2.8)
project(Navigation C CXX)
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.2" AND NOT APPLE)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
else()
message(STATUS "Checking compiler flags for C++11 support.")
# Set C++11 support flags for various compilers
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
message(STATUS "C++11 is supported.")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
elseif(COMPILER_SUPPORTS_CXX0X)
message(STATUS "C++0x is supported.")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
endif()
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
endif()
#MESSAGE(STATUS "WIN32 ${WIN32}")
if (WIN32)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -D_CRT_SECURE_NO_WARNINGS /MTd")
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG /MT /DEBUG:FASTLINK")
set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -D_CRT_SECURE_NO_WARNINGS /MTd /Od")
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG /MT /DEBUG:FASTLINK /O2 /Ob2")
endif (WIN32)
if (IOS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fembed-bitcode")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -fembed-bitcode")
endif()
if (CMAKE_CL_64)
message(STATUS "x64")
else (CMAKE_CL_64)
message(STATUS "x86")
endif (CMAKE_CL_64)
OPTION(DEFINE_DT_POLYREF64 "use 64-bit refs" ON)
if(DEFINE_DT_POLYREF64)
add_definitions(-DDT_POLYREF64)
ENDIF(DEFINE_DT_POLYREF64)
message(${PROJECT_SOURCE_DIR})
include_directories(
"${PROJECT_SOURCE_DIR}/../../../Detour"
"${PROJECT_SOURCE_DIR}/../../../Navigation"
"${PROJECT_SOURCE_DIR}/../../Src"
"${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Include"
"${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Include"
"${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Include"
)
#set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}")
#set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib/$(Platform)/${CMAKE_BUILD_TYPE}")
file(GLOB Detour "${PROJECT_SOURCE_DIR}/../../../Detour/*")
file(GLOB Navigation "${PROJECT_SOURCE_DIR}/../../../Navigation/*.*")
file(GLOB IO "${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Source/*")
file(GLOB Load "${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Source/*")
file(GLOB Container "${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Source/*")
file(GLOB Client "${PROJECT_SOURCE_DIR}/../../Src/*")
source_group(\\Detour FILES ${Detour})
source_group(\\Navigation FILES ${Navigation})
source_group(\\Container FILES ${Container})
source_group(\\IO FILES ${IO})
source_group(\\Load FILES ${Load})
source_group(\\Client FILES ${Client})
if (APPLE)
if(IOS)
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
add_library(Recast STATIC ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
set_xcode_property(Recast IPHONEOS_DEPLOYMENT_TARGET "9.0")
else()
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)")
add_library(Recast MODULE ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
set_target_properties(Recast PROPERTIES BUNDLE TRUE)
endif()
else()
add_definitions(-DSDG_DLL_EXPORT)
add_library(Recast SHARED ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
endif()
以下是输出文件的一部分:
In file included from /Users/wutong/Desktop/Navigation/navigation/Detour/DetourTileCache.cpp:1:
In file included from /Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Detour/DetourTileCache.h:5:
/Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Navigation/Container/Include/Vector2.h:31:17: error: expected ';' at end of declaration list
IntVector2() noexcept :
^
;
/Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Navigation/Container/Include/Vector2.h:64:50: error: expected ';' at end of declaration list
IntVector2& operator =(const IntVector2& rhs) noexcept = default;
^
;
/Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Navigation/Container/Include/Vector2.h:73:65: error: no matching constructor for
initialization of 'IntVector2'
IntVector2 operator +(const IntVector2& rhs) const { return IntVector2(x_ + rhs.x_, y_ + rhs.y_); }
^ ~~~~~~~~~~~~~~~~~~~~~~~~
/Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Navigation/Container/Include/Vector2.h:27:7: note: candidate constructor
(the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
class IntVector2
^
/Users/wutong/Desktop/Navigation/navigation/Client/Build/ios/../../../Navigation/Container/Include/Vector2.h:31:5: note: candidate constructor not viable: requires
0 arguments, but 2 were provided
IntVector2() noexcept :
...
...
...
** BUILD FAILED **
The following build commands failed:
CompileC build_ios/Navigation.build/Release-iphoneos/Recast.build/Objects-normal/armv7/DetourTileCache.o /Users/wutong/Desktop/Navigation/navigation/Detour/DetourTileCache.cpp normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
有人能帮忙吗?提前谢谢。我想我明白了,我应该把它写在ifIOS语句范围内,所以我这样写我的CmakeList,它运行得很好
cmake_minimum_required(VERSION 2.8)
project(Navigation C CXX)
#MESSAGE(STATUS "WIN32 ${WIN32}")
if (WIN32)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -D_CRT_SECURE_NO_WARNINGS /MTd")
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG /MT /DEBUG:FASTLINK")
set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -D_CRT_SECURE_NO_WARNINGS /MTd /Od")
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG /MT /DEBUG:FASTLINK /O2 /Ob2")
endif (WIN32)
if (IOS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fembed-bitcode")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -std=c++11 -fembed-bitcode")
endif()
if (CMAKE_CL_64)
message(STATUS "x64")
else (CMAKE_CL_64)
message(STATUS "x86")
endif (CMAKE_CL_64)
OPTION(DEFINE_DT_POLYREF64 "use 64-bit refs" ON)
if(DEFINE_DT_POLYREF64)
add_definitions(-DDT_POLYREF64)
ENDIF(DEFINE_DT_POLYREF64)
message(${PROJECT_SOURCE_DIR})
include_directories(
"${PROJECT_SOURCE_DIR}/../../../Detour"
"${PROJECT_SOURCE_DIR}/../../../Navigation"
"${PROJECT_SOURCE_DIR}/../../Src"
"${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Include"
"${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Include"
"${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Include"
)
#set(EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}")
#set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/lib/$(Platform)/${CMAKE_BUILD_TYPE}")
file(GLOB Detour "${PROJECT_SOURCE_DIR}/../../../Detour/*")
file(GLOB Navigation "${PROJECT_SOURCE_DIR}/../../../Navigation/*.*")
file(GLOB IO "${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/IO/Source/*")
file(GLOB Load "${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/Load/Source/*")
file(GLOB Container "${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Include/*" "${PROJECT_SOURCE_DIR}/../../../Navigation/Container/Source/*")
file(GLOB Client "${PROJECT_SOURCE_DIR}/../../Src/*")
source_group(\\Detour FILES ${Detour})
source_group(\\Navigation FILES ${Navigation})
source_group(\\Container FILES ${Container})
source_group(\\IO FILES ${IO})
source_group(\\Load FILES ${Load})
source_group(\\Client FILES ${Client})
if (APPLE)
if(IOS)
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
add_library(Recast STATIC ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
set_xcode_property(Recast IPHONEOS_DEPLOYMENT_TARGET "9.0")
else()
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)")
add_library(Recast MODULE ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
set_target_properties(Recast PROPERTIES BUNDLE TRUE)
endif()
else()
add_definitions(-DSDG_DLL_EXPORT)
add_library(Recast SHARED ${Client} ${Detour} ${Navigation} ${IO} ${Container} ${Load})
endif()