[CMake] CMake 3.2.2 generates too many virtual folders for Codeblocks project

roman t.err.a at yandex.ru
Thu Apr 23 05:11:59 EDT 2015


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)/|


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150423/01484aa5/attachment.html>


More information about the CMake mailing list