如何使用CMake创建Xcode组?

时间:2017-07-11 08:49:22

标签: c++ xcode cmake

我将C ++项目拆分为多个嵌套文件夹,每个命名空间一个(internalinternal::business_logic_oneinternal::business_logic_two)。

当我在QTCreator中打开项目时,文件夹层次结构得到尊重,项目在视觉上有意义,使其易于导航。

但是当我生成Xcode项目时,我有一个非常独特的文件夹层次结构,其中我的标题和实现文件(.cpp)最终出现在与项目文件夹结构无关的不同文件夹(组?)中。

有没有办法让Xcode尊重这种层次结构?

更新

我的CMakeLists.txt看起来像这样:

if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
  message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt.")
endif()

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(myproject)

set(PROJECT_VERSION_MAJOR, 0)
set(PROJECT_VERSION_MINOR, 1)
set(PROJECT_VERSION_PATCH, 0)
set(PROJECT_VERSION_TWEAK, 0)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)
set(CMAKE_BUILD_TYPE DEBUG)
enable_language(CXX)

if(NOT CMAKE_BUILD_TYPE)
   set(CMAKE_BUILD_TYPE DEBUG)
endif()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASIO_STANDALONE -std=c++11")

if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wno-padded -Wno-undef -Wno-old-style-cast -gdwarf-2")
endif()

if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything -ferror-limit=0 -fcolor-diagnostics -Wno-c++98-compat -Wno-documentation -Wno-c++98-compat-pedantic -Wno-weak-vtables -Wno-global-constructors -Wno-exit-time-destructors")
endif()
if (CMAKE_COMPILER_IS_GNUCXX)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lstdc++")
endif()

if (CMAKE_BUILD_TYPE MATCHES DEBUG)
#  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASIO_ENABLE_HANDLER_TRACKING")
  if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
  endif()
  if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -glldb")
  endif()
endif()

if (CMAKE_VERSION VERSION_LESS 3.2)
    set(UPDATE_DISCONNECTED_IF_AVAILABLE "")
else()
    set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1")
endif()

# Build library
set(SOURCE_FILES <my_source_files>)
add_library(myproject STATIC ${SOURCE_FILES})
# add_library(myproject SHARED ${SOURCE_FILES})

0 个答案:

没有答案