Hi,

i have a project in the path D:\folder1\folder2\prj1, all sources and 
CMakeLists.txt are in this folder 'prj1'.
CMake generates for the Codeblocks project file in which the source files are 
located in a virtual folders with the path not corresponding to the root folder 
of the project 'prj1'.
For Codelite CMake generates normal path corresponding to the root folder of 
the project.

So generated project tree in Codeblocks:

___CMakeFiles
|    |__[..]
|    |    |__[..]
|    |         |__[programms]
|    |               |__[cmake]
|    |                       |__[share]
|    |                             |__cmake-3.2
|    |                                   |__[Modules]
|    |                                       |__[Compiler]
|    |                                       |    |__GNU-C.cmake
|    |                                       |     |__GNU-CXX.cmake
|    |                                       |    |__GNU.cmake
|    |                                       |     |__GNU.cmake
|    |                                       |
|    |                                       |__[Platform]
|    |                                       |   |__Windows-GNU-C-ABI.cmake
|    |                                       |   |__ ..... cmake files
|    |                                      |
|    |                                       |__ ..... cmake files
|    |__CMakeList.txt
|
|__[Sources]
|    |__[folder1]
|          |__[folder2]
|              |__[prj1]
|                    |__ .... '.cpp' files
|
|__[Headers]
|    |__[folder1]
|          |__[folder2]
|              |__[prj1]
|                    |__ .... '.h' files
|
|__[Resources]
    |__[folder1]
          |__[folder2]
                |__[prj1]
                      |__ resource.rc

Generated project tree in Codelite:

|__[include]
|    |_ .... '.h' files
|__[src]
    |__ .... '.cpp' files


Why such a difference?
Is it possible to get CMake does not create extra virtual folders for 
Codeblocks project?

CMakeLists.txt:
# Сборочный файл для программы my_program

# Минимальная версия CMake, младше нельзя.
cmake_minimum_required( VERSION 2.8.4 )

# Устанавливаем значение переменной BIN
set( BIN hisview_dev )
# Имя проекта у нас соответствует имени программы.
project( ${BIN} )

# Добавляем свои опции компиляции
set ( CMAKE_CXX_FLAGS "-m32 -std=gnu++11" )

set(CMAKE_INSTALL_PREFIX $ENV{mybin})
message (STATUS "CMAKE_INSTALL_PREFIX:" ${CMAKE_INSTALL_PREFIX})

# указываем куда складывается результат компиляции
set (EXECUTABLE_OUTPUT_PATH $ENV{mybin})

# пока не разбирался для чего это ???
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $ENV{PROJECTS_OUTPUT})

# Устанавливаем корневой путь к папке с исходниками программы.
set( SOURCE_ROOT ${PROJECT_SOURCE_DIR} )
message (STATUS "PROJECT_SOURCE_DIR:" ${PROJECT_SOURCE_DIR})

set(DEBEA_ROOT $ENV{DEBEA})
file(TO_CMAKE_PATH ${DEBEA_ROOT} DEBEA_ROOT)
message (STATUS "DEBEA_ROOT" ${DEBEA_ROOT})
#STRING(REGEX REPLACE '\\' '/' TEST_VAR ${DEBEA_ROOT} )
set(DEBEA_INCLUDE ${DEBEA_ROOT}/dba)
message (STATUS "DEBEA_INCLUDE:" ${DEBEA_INCLUDE})
set(DEBEA_LIB ${DEBEA_ROOT}/lib/gcc_static_mingw-w64-32)

# По умолчанию имена файлов с исходниками нужно перечислять явно.
# Функция aux_source_directory (рекурсивно) просматривает исходники
#(начиная от корневого пути, указанного выше) и собирает имена всех
# файлов, имеющих классическое разрешение, такие как .cpp, .cxx и т.п.
# В итоге формируется список всех найденных файлов и сохраняется в переменной
# SOURCES
aux_source_directory( ${SOURCE_ROOT} SOURCES )
message (STATUS "SOURCES:" ${SOURCES})

# Для Windows ОС включаем файлы ресурсов
#message (STATUS "SRC:" ${SRC})
if(WIN32)
  set(SRC ${SRC} ${SOURCE_ROOT}/resource.rc)
endif(WIN32)

# Включаем дополнительные файлы в проект
# MainFrameBase.fbp - проект wxFormBlocks
#set(SRC ${SRC} ${SOURCE_ROOT}/MainFrameBase.fbp 
${SOURCE_ROOT}/wxsmith/MainFrameBase.wxs ${SOURCE_ROOT}/wx_pch.h)

# Создание группы файлов ???
#source_group ("Headers" FILES ${HEADERS})
#source_group ("Source Files" FILES ${SOURCES})

#Подключаем wxWidgets
find_package(wxWidgets COMPONENTS aui adv core base REQUIRED)
if(wxWidgets_FOUND)
    INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
    include(${wxWidgets_USE_FILE})
endif ()

include_directories(${DEBEA_ROOT})
link_directories(${DEBEA_LIB})

set (REQUIRED_LIBRARIES ${REQUIRED_LIBRARIES} ${wxWidgets_LIBRARIES})
message (STATUS lib: ${wxWidgets_LIBRARIES})
# Собираем исполняемый файл с именем my_program.
#add_executable( ${BIN} WIN32 ${SOURCES})
add_library(dba STATIC IMPORTED)
set_property(TARGET dba PROPERTY IMPORTED_LOCATION ${DEBEA_LIB}/libdba.a)
add_executable( ${BIN} WIN32 ${SOURCES} ${SRC})
# Компонуем собранную программу с необходимыми динамическими библиотеками.
#target_link_libraries(${BIN} ${wxWidgets_LIBRARIES})
target_link_libraries( ${BIN} ${REQUIRED_LIBRARIES} dba)
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to