2011-11-12 12 views
6

Estoy generando una solución VS2010 con algunos proyectos (actualmente 4, será de hasta 10-20 al final). Solo quiero que uno de ellos construya; el resto debe estar deshabilitado. Puedo hacerlo manualmente yendo al administrador de configuración y desmarcando los cuadros que no quiero, pero obviamente esta no es una buena solución.Deshabilitar un proyecto de Visual Studio para crear usando cmake

¿Hay algo que pueda agregar al archivo CMakeLists.txt para un proyecto que hará que lo haga? Buscando a través de los documentos, Google y SO no arrojaron nada.

only bam projectshould be built

Actualización: Aquí está mi CMakeLists.txt raíz en caso de que ayuda a:

cmake_minimum_required(VERSION 2.8) 

add_definitions(-DCOMPILER_MSVC) 
project (PDEngine) 

set(LINKER_LANGUAGE CXX) 

add_subdirectory (units/platform) 
add_subdirectory (units/render_api) 
add_subdirectory (units/memory) 
add_subdirectory (units/game) 

set(custom_exe "${CMAKE_CURRENT_BINARY_DIR}/units/Platform/Debug/Platform.lib2") 

add_custom_command(OUTPUT ${custom_exe} 
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/local/msvc/bam.bat -j $ENV{NUMBER_OF_PROCESSORS} 
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/local/msvc/bam.bat 
) 
#add_custom_command(OUTPUT ${custom_exe_clean} 
    #COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/local/msvc/bam.bat -c 
    #DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/local/msvc/bam.bat 
#) 

add_custom_target(bam ALL DEPENDS ${custom_exe}) 
#add_custom_target(bamclean ALL DEPENDS ${custom_exe_clean}}) 

(La materia bam.bat se basa en la respuesta que obtuve aquí: How do I configure CMake to make the VS solution use a specific build commandline?)

y aquí está la CMakeLists.txt para el proyecto "plataforma":

cmake_minimum_required (VERSION 2.8) 
project (Platform) 

set (COMPILER_MSVC 1) 

include_directories(${Platform_SOURCE_DIR}/include) 
file(GLOB Project_HEADERS ${Platform_SOURCE_DIR}/include/platform/*.h) 
source_group("Headers" FILES ${Project_HEADERS}) 

add_library(Platform STATIC EXCLUDE_FROM_ALL src/*.cpp ${Project_HEADERS}) 
+0

¿Por qué el voto a favor? – Srekel

+2

Ah, vi el texto emergente de lo que debería significar la votación cuando pase el cursor sobre los botones de votación. "no muestra esfuerzo de investigación"? He pasado unas cuantas horas investigando esto y lo dije en la publicación. Y "no está claro", ¿cómo no está claro lo que deseo hacer? "Inútil"? Es para mi. – Srekel

+0

ha hecho +1 en usted. No estoy de acuerdo con esta pregunta. Aunque, puede agregar algunas secciones de muestra de su archivo CMakeLists.txt para dar a otros un contexto en el que operar. – mevatron

Respuesta

2

Por lo tanto, si lo que desea hacer no es crear algo de forma predeterminada, puede eliminarlo del destino "ALL" (que aparece en Visual Studio como ALL_BUILD). La forma de hacerlo es con la propiedad de destino EXCLUDE_FROM_ALL, o pasando EXCLUDE_FROM_ALL a add_executable y add_library. (Los destinos personalizados predeterminados son EXCLUDE_FROM_ALL, por lo que, para hacer lo contrario, agregue ALL a los argumentos para agregar_actualizar_destino).

Luego, se mostrarán todos sus objetivos, pero al hacer clic en "crear solución", solo se generarán los que desee. Se pueden construir otros haciendo clic con el botón derecho y eligiendo "Crear", como el proyecto/objetivo INSTALACIÓN incorporado.

+0

Gracias. Intenté eso, pero hasta donde sé, no ayuda. Si realizo una modificación, hago clic con el botón secundario y construyo "bam" manualmente, luego realizo una construcción de la solución, pero seguirá construyendo el proyecto en el que hice el cambio. He actualizado mi publicación con mi CMakeLists.txt – Srekel

+0

Los destinos personalizados no serán dependencias de ALL_BUILD de forma predeterminada, pero seguirán construyéndose mediante un comando de solución (Re) a menos que no esté marcado en el administrador de configuración. – John

Cuestiones relacionadas