Estoy configurando cmake para mi proyecto y he configurado un proyecto de prueba para él. Cuando genera mi proyecto visual studio 2010, quiero hacerlo como el proyecto que tuve antes.Especifique cómo cmake crea el proyecto de estudio visual
- crea un proyecto ALL_BUILD y ZERO_CHECK que no quiero.
- pone los archivos .h en la carpeta Dependencias Externas. Quiero una carpeta Incluir archivos donde vayan todos los archivos .h.
- También quiero agrupar algunos archivos bajo diferentes filtros. Al igual que en mi biblioteca principal, quiero agrupar todos los archivos relacionados con Matemáticas en una carpeta y todos los archivos relacionados con la Gestión de eventos en otra.
- En el sistema de archivos, coloca los archivos del proyecto dentro de/Lib/src. Probablemente porque lo tengo organizado en la carpeta del código, pero no quiero eso para los archivos del proyecto.
- Quiero configurar diferentes configuraciones, así que tengo DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX y luego establezco un flag USE_OPENGL o USE_DIRECTX para los dos tipos de configuraciones.
¿Cómo puedo excluir algunos archivos cuando construyo en Windows y otros cuando construyo en Linux? Al igual que tengo WindowWin.cpp y WindowLinux.cpp.
He intentado lo que sugested pero no puede hacerlo funcionar:
#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})
Yo como que tengo trabajo ahora .. sólo eso quiero subcarpetas para encabezados y archivos de origen dentro del grupo fuente.
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})
Aquí está mi solución :)
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})
Mire http://stackoverflow.com/questions/27175754/what-are-all-build-and-zero-check-and-do-i-need-them para ver qué ZERO_CHECK y ALL_BUILD son. – sashoalm