2011-11-12 17 views
6

Sto generando una soluzione VS2010 con alcuni progetti (attualmente 4, sarà fino a 10-20 alla fine). Voglio solo uno di loro da costruire; il resto dovrebbe essere disabilitato. Posso farlo manualmente andando in Configuration Manager e deselezionando le caselle che non voglio, ma ovviamente questa non è una buona soluzione.Disabilitare un progetto di Visual Studio per creare usando cmake

C'è qualcosa che posso aggiungere al file CMakeLists.txt per un progetto che lo farà fare? Cercando tra i documenti, Google e SO non hanno prodotto nulla.

only bam projectshould be built

Aggiornamento: Ecco il mio CMakeLists.txt radice nel caso in cui aiuta:

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 roba bam.bat è basato fuori della risposta che ho ricevuto qui: How do I configure CMake to make the VS solution use a specific build commandline?)

Ed ecco la CMakeLists.txt per il progetto "piattaforma":

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

Perché il downvote? – Srekel

+2

Ah, ho visto il testo popup per ciò che il voto dovrebbe significare quando ho passato il mouse sopra i pulsanti di voto. "non mostra uno sforzo di ricerca"? Ho passato parecchie ore a indagare su questo, e l'ho detto nel post. E "non è chiaro" - come non è chiaro cosa voglio fare? "Inutile"? È per me. – Srekel

+0

ha fatto +1 su di te. Accetto nulla di sbagliato in questa domanda. Sebbene, potresti aggiungere alcune sezioni di esempio dal tuo file CMakeLists.txt per dare ad altri un contesto in cui operare. – mevatron

risposta

2

Quindi, se quello che vuoi fare non è creare qualcosa di default, puoi rimuoverlo dalla destinazione "ALL" (che compare in Visual Studio come ALL_BUILD). Il modo in cui lo fai è con la proprietà target EXCLUDE_FROM_ALL o passando EXCLUDE_FROM_ALL a add_executable e add_library. (I target personalizzati vengono impostati su EXCLUDE_FROM_ALL, quindi lì, per eseguire il contrario, aggiungi ALL agli argomenti di add_custom_target).

Quindi, verranno visualizzati tutti i target, ma quando si fa clic su "build solution", solo quelli che si desidera verranno creati. Gli altri possono essere creati facendo clic con il tasto destro su di essi e scegliendo "Build", come il progetto/obiettivo di installazione integrato.

+0

Grazie. Ci ho provato, ma per quanto posso dire, non aiuta. Se apporto una modifica, fai clic con il pulsante destro del mouse e creo "bam" manualmente, quindi esegui una soluzione, ma continuerà a generare il progetto in cui ho apportato la modifica. Ho aggiornato il mio post con il mio CMakeLists.txt – Srekel

+0

Le destinazioni personalizzate non saranno le dipendenze di ALL_BUILD per impostazione predefinita, ma saranno comunque costruite da un comando (Ri) build Solution a meno che non siano contrassegnate nel Configuration Manager. – John

Problemi correlati