Tôi đang thiết lập cmake cho dự án của mình và tôi đã thiết lập một dự án thử nghiệm cho nó. Khi nó tạo ra dự án studio hình ảnh 2010 của tôi, tôi muốn biến nó thành dự án tôi đã có trước đó.Chỉ định cách cmake tạo dự án studio trực quan
- nó tạo dự án ALL_BUILD và ZERO_CHECK mà tôi không muốn.
- nó đặt tệp .h vào thư mục Phụ thuộc bên ngoài. Tôi muốn có một thư mục bao gồm tập tin, nơi tất cả các tập tin .h đi.
- Tôi cũng muốn nhóm một số tệp theo các bộ lọc khác nhau. Giống như trong lib cốt lõi của tôi, tôi muốn nhóm tất cả các tệp liên quan đến Toán trong một thư mục và tất cả các tệp liên quan đến Quản lý sự kiện trong một thư mục khác.
- Trên hệ thống tệp, nó đặt tệp dự án vào bên trong/Lib/src. Có lẽ vì tôi đã tổ chức nó trong thư mục mã, nhưng tôi không muốn điều đó cho các tệp dự án.
- Tôi muốn thiết lập cấu hình khác vì vậy tôi có DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX và sau đó đặt cờ USE_OPENGL hoặc USE_DIRECTX cho hai loại cấu hình.
Làm cách nào để loại trừ một số tệp khi tôi xây dựng trên cửa sổ và các tệp khác khi tôi xây dựng trên linux? Giống như tôi có WindowWin.cpp và WindowLinux.cpp.
Tôi đã thử những gì bạn sugested nhưng không thể làm cho nó làm việc:
#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})
tôi loại đã nhận nó làm việc bây giờ .. duy nhất mà tôi muốn các thư mục phụ cho tiêu đề và các tập tin nguồn bên trong nhóm nguồn.
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})
Heres giải pháp của tôi :)
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})
Xem http://stackoverflow.com/questions/27175754/what-are-all-build-and-zero-check-and-do-i-need-them để xem ZERO_CHECK và ALL_BUILD là gì. – sashoalm