2011-11-12 34 views
6

Tôi đang tạo một giải pháp VS2010 với một vài dự án (hiện tại là 4, sẽ lên đến 10-20 cuối cùng). Tôi chỉ muốn một người trong số họ xây dựng; phần còn lại sẽ bị vô hiệu hóa. Tôi có thể làm điều này bằng tay bằng cách vào trình quản lý cấu hình và bỏ chọn các hộp mà tôi không muốn, nhưng rõ ràng đây không phải là giải pháp tốt.Vô hiệu hóa dự án Visual Studio để xây dựng bằng cmake

Có điều gì tôi có thể thêm vào tệp CMakeLists.txt cho dự án sẽ khiến nó thực hiện việc này không? Tìm kiếm thông qua các tài liệu, google và SO mang lại không có gì.

only bam projectshould be built

Cập nhật: Đây là CMakeLists.txt gốc của tôi trong trường hợp đó giúp:

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

(Các công cụ bam.bat dựa tắt của câu trả lời tôi nhận được ở đây: How do I configure CMake to make the VS solution use a specific build commandline?)

Và đây là CMakeLists.txt cho dự án "nền tảng":

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

Tại sao bạn nên downvote? – Srekel

+2

Ah, thấy văn bản bật lên cho những gì biểu quyết có nghĩa là khi tôi di chuột qua các nút bầu chọn. "không cho thấy nỗ lực nghiên cứu"? Tôi đã dành một vài giờ nhìn vào điều này, và tôi đã nói như vậy trong bài viết. Và "nó không rõ ràng" - làm thế nào là nó không rõ ràng những gì tôi muốn làm gì? "Không hữu ích"? Đó là với tôi. – Srekel

+0

đã +1 bạn. Tôi đồng ý không có gì sai với câu hỏi này. Mặc dù, bạn có thể thêm một số phần mẫu từ tệp CMakeLists.txt của mình để cung cấp cho người khác một ngữ cảnh để hoạt động. – mevatron

Trả lời

2

Vì vậy, nếu những gì bạn muốn làm là không xây dựng một cái gì đó theo mặc định, bạn có thể loại bỏ nó từ mục tiêu "ALL" (hiển thị trong Visual Studio là ALL_BUILD). Cách bạn làm điều này là với thuộc tính đích EXCLUDE_FROM_ALL hoặc bằng cách chuyển EXCLUDE_FROM_ALL thành add_executable và add_library. (Mục tiêu tùy chỉnh mặc định là EXCLUDE_FROM_ALL, do đó, để làm ngược lại, bạn thêm TẤT CẢ vào các đối số để add_custom_target).

Sau đó, tất cả các mục tiêu của bạn sẽ hiển thị, nhưng khi nhấp vào "giải pháp xây dựng", chỉ những mục tiêu bạn muốn sẽ xây dựng. Những người khác có thể được xây dựng bằng cách nhấp chuột phải vào chúng và chọn "Xây dựng", giống như dự án/mục tiêu INSTALL được cài sẵn.

+0

Cảm ơn. Tôi đã thử điều đó, nhưng theo như tôi có thể nói, nó không giúp được gì. Nếu tôi thực hiện sửa đổi, sau đó nhấp chuột phải và xây dựng "bam" theo cách thủ công, sau đó thực hiện giải pháp xây dựng, nó sẽ vẫn tạo dự án mà tôi đã thực hiện thay đổi. Tôi đã cập nhật bài đăng của mình với các mục tiêu tùy chỉnh CMakeLists.txt – Srekel

+0

Tùy chỉnh của mình sẽ không phụ thuộc vào ALL_BUILD theo mặc định, nhưng chúng sẽ vẫn được xây dựng bằng lệnh (Re) xây dựng giải pháp trừ khi được bỏ đánh dấu trong trình quản lý cấu hình. – John

Các vấn đề liên quan