-1
我有一個問題是這個正確的應用程序結構?我從C++和CMake開始,我想以正確的方式開始。它是正確的C++應用程序結構?
Root
|--build
|--src
| |-Application
| | |-------App.cpp
| | |-------App.h
| | |-------CMakeLists.txt
| |-Logger
| | |--Some files
| | |--CMakeLists
| |-CMakeLists.txt
| |-main.cpp
|--CMakeLists.txt
根\的CMakeLists.txt
cmake_minimum_required (VERSION 2.6 FATAL_ERROR)
# set (CMAKE_VERBOSE_MAKEFILE ON)
set (APP_NAME "sdl-example")
project (${APP_NAME})
# ///////////////////////
# /// Check build dir ///
# ///////////////////////
set (Build_Dir_OK "TRUE")
string (REGEX MATCH "^${CMAKE_SOURCE_DIR}" In_Sub_Dir ${CMAKE_BINARY_DIR})
if (In_Sub_Dir)
string (REGEX MATCH "^${CMAKE_SOURCE_DIR}/build" In_Build_Dir ${CMAKE_BINARY_DIR})
if (NOT In_Build_Dir)
set (Build_Dir_OK "FALSE")
endif()
endif()
if (NOT Build_Dir_OK)
message (FATAL_ERROR "You must run cmake from a directory that is not in your source tree, or that is in a special subdirectory of the tree whose name begins with ‘build’.")
endif()
# ///////////////////////////
# /// Initializing OpenGL ///
# ///////////////////////////
find_package(OpenGL)
if (NOT OPENGL_FOUND)
message (FATAL_ERROR "OpenGL not found")
else (NOT OPENGL_FOUND)
message ("OpenGL correctly found")
endif (NOT OPENGL_FOUND)
include_directories(
${OPENGL_INCLUDE_DIRS}
${INCLUDE_DIRECTORIES}
)
# ////////////////////////
# /// Initializing SDL ///
# ////////////////////////
find_package(SDL)
if (NOT SDL_FOUND)
message (FATAL_ERROR "SDL not found!")
else (NOT SDL_FOUND)
message ("SDL correctly found")
endif (NOT SDL_FOUND)
include_directories(
${SDL_INCLUDE_DIR}
${INCLUDE_DIRECTORIES}
)
set (LIBRARIES ${OPENGL_LIBRARIES} ${SDL_LIBRARY})
add_subdirectory(src)
根的\ src \的CMakeLists.txt
if (APP_NAME STREQUAL "")
message (FATAL_ERROR "You must set the COMPONENT_NAME variable!")
endif()
message ("Preparing application: " ${APP_NAME})
file (GLOB SRCS ./*.c ./*.cpp)
file (GLOB HDRS ./*.h ./*.hpp)
include_directories (${CMAKE_CURRENT_SOURCE_DIR})
# /////////////////////////
# /// Adding executable ///
# /////////////////////////
add_executable (
${APP_NAME}
${SRCS}
${HDRS}
)
set (COMPONENT_NAME "application")
set (COMPONENTS ${COMPONENTS} ${COMPONENT_NAME})
add_subdirectory("Application")
target_link_libraries(
${APP_NAME}
${LIBRARIES}
${COMPONENTS}
${TARGET_LINK_LIBRARIES}
)
根的\ src \應用
if (COMPONENT_NAME STREQUAL "")
message (FATAL_ERROR "You must set the COMPONENT_NAME variable!")
endif()
message ("Preparing component:" ${COMPONENT_NAME})
file (GLOB SRCS ./*.c ./*.cpp)
file (GLOB HDRS ./*.h ./*.hpp)
add_library(
${COMPONENT_NAME}
${SRCS}
${HDRS}
)
target_link_libraries (
${COMPONENT_NAME}
${LIBRARIES}
${SDL_LIBRARY}
)
正確的應用程序結構確實做*什麼*? – 2013-02-23 18:20:06
好的,對不起,定義不好。我認爲易於維護(添加新組件,庫等)。 – user1607808 2013-02-23 18:25:11