2011-11-12 53 views
6

我使用一些項目(當前爲4,最終將高達10-20)生成VS2010解決方案。我只想讓他們中的一個去建立;其餘的應該被禁用。我可以通過進入配置管理器並取消選中我不想要的框來手動執行此操作,但顯然這不是一個好的解決方案。禁用使用cmake構建Visual Studio項目

有什麼我可以添加到CMakeLists.txt文件的項目,將導致它做到這一點?通過搜索文檔,谷歌和SO沒有任何產品。

only bam projectshould be built

更新:這裏是我的情況下根的CMakeLists.txt幫助:

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}}) 

(該bam.bat東西是基於關閉的答案我來到這裏:How do I configure CMake to make the VS solution use a specific build commandline?

這裏是「平臺」項目的CMakeLists.txt:

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

爲什麼downvote? – Srekel

+2

啊,看到彈出文本的投票應該意味着什麼時,我在選項按鈕上方懸停。 「不顯示研究努力」?我花了好幾個小時來看這個,我在帖子中這麼說。而且「目前還不清楚」 - 我不清楚自己想做什麼? 「沒有用」?這是對我的。 – Srekel

+0

爲你+1。我同意這個問題沒有任何錯誤。雖然,您可能會從CMakeLists.txt文件中添加一些示例部分,以便爲其他人提供操作的上下文。 – mevatron

回答

2

因此,如果你想要做的事情不是默認構建的東西,你可以從「ALL」目標中刪除它(在Visual Studio中顯示爲ALL_BUILD)。執行此操作的方式是使用目標屬性EXCLUDE_FROM_ALL,或者將EXCLUDE_FROM_ALL傳遞給add_executable和add_library。 (自定義目標默認爲EXCLUDE_FROM_ALL,因此在那裏,做相反的操作,將所有參數添加到add_custom_target參數中)。

然後,你的所有目標都會顯示出來,但是當點擊「構建解決方案」時,只有你想要構建的目標。其他人可以通過右鍵單擊並選擇「Build」來構建,如內置的INSTALL項目/目標。

+0

謝謝。我嘗試過,但據我所知,這並沒有幫助。如果我進行了修改,然後右鍵單擊並手動構建「bam」,然後執行解決方案構建,它仍然會構建我在其中進行更改的項目。我已經使用我的CMakeLists.txt更新了我的帖子 – Srekel

+0

默認情況下,自定義目標不會是ALL_BUILD的依賴項,但除非在配置管理器中未標記,否則它們仍將由(重新)構建解決方案命令構建。 – John

相關問題