Укажите, как cmake создает проект Visual Studio

Я настраиваю cmake для своего проекта, и я создал для него тестовый проект. Когда он сгенерирует мой проект Visual Studio 2010, я хочу сделать его таким же, как и предыдущий.

  • он создает проекты ALL_BUILD и ZERO_CHECK, которые мне не нужны.
  • он помещает файлы .h в папку «Внешние зависимости». Мне нужна папка Include Files, в которой находятся все файлы .h.
  • Я также хочу сгруппировать файлы по разным фильтрам. Как и в моей основной библиотеке, я хочу сгруппировать все файлы, связанные с математикой, в одной папке, а все файлы, связанные с управлением событиями, в другой.
  • В файловой системе файлы проекта помещаются в / Lib / src.Вероятно, потому что я организовал это в папке с кодом, но я не хочу этого для файлов проекта.
  • Я хочу настроить другую конфигурацию, поэтому у меня есть DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX, а затем я устанавливаю флаг USE_OPENGL или USE_DIRECTX для двух типов конфигураций.

Как я могу исключить одни файлы при сборке на Windows, а другие при сборке на Linux? Как у меня WindowWin.cpp и WindowLinux.cpp.


Я пробовал то, что вы предлагали, но не могу заставить его работать:

#LibProject/src

FILE(GLOB test0_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test.h)
source_group(include0 FILES ${test0_headers})
FILE(GLOB test0_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(source0 FILES ${test0_source})

FILE(GLOB test1_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test1.h)
source_group(include1 FILES ${test1_headers})
FILE(GLOB test1_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test1.cpp)
source_group(source1 FILES ${test1_source})

include_directories(${test0_headers} ${test1_headers})

add_library(LibProject  ${test0_headers} ${test1_headers} ${test0_source} ${test
1_source})

Я вроде как заработал ... только то, что мне нужны подпапки для заголовков и исходных файлов внутри исходной группы.

set(test_source0 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST FILES ${test_source0})

set(test_source1 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2 FILES ${test_source1})

include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject  ${test_source0} ${test_source1})

Вот мое решение :)

set(test_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h)
set(test_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)

source_group(TEST\\Headers FILES ${test_header})
source_group(TEST\\Source FILES ${test_source})

set(test2_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h)
set(test2_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2\\Headers FILES ${test2_header})
source_group(TEST2\\Source FILES ${test2_source})

include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)

add_library(LibProject
${test_header}
${test_source}
${test2_header}
${test2_source})
8
задан bitgregor 29 November 2011 в 23:30
поделиться