I have a C++ project split into several nested folders, one per namespace (internal
, internal::business_logic_one
, internal::business_logic_two
).
When I open the project in QTCreator the folder hierarchy is respected and the project makes sense visually, making it easy to navigate.
But when I generate the Xcode project I have a very distinct folder hierarchy where my header and implementation files (.cpp) end up in distinct folders (groups?) that are not related to folder structure of the project.
Is there a way to make Xcode respect that hierarchy?
Update
My CMakeLists.txt looks like this:
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})