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