Konfiguruję cmake dla mojego projektu i mam dla niego projekt testowy. Kiedy generuję projekt Visual Studio 2010, chcę zrobić to jako projekt, który miałem wcześniej.Określ, w jaki sposób cmake tworzy projekt wizualny studio
- Tworzy projekt ALL_BUILD i ZERO_CHECK, którego nie chcę.
- powoduje umieszczenie plików .h w folderze External Dependencies. Chcę folder Include Files, w którym znajdują się wszystkie pliki .h.
- Chcę również pogrupować pliki w różnych filtrach. Tak jak w mojej głównej bibliotece, chcę zgrupować wszystkie pliki związane z Mathsem w folderze i wszystkie pliki związane z zarządzaniem Eventami w innym.
- W systemie plików umieszcza pliki projektu w katalogu/Lib/src. Prawdopodobnie powoduje, że mam to zorganizowane w folderze kodu, ale nie chcę tego dla plików projektu.
- Chcę ustawić inną konfigurację, więc mam DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX, a następnie ustawienie flagi USE_OPENGL lub USE_DIRECTX dla dwóch typów konfiguracji.
Jak mogę wykluczyć niektóre pliki podczas kompilacji w systemie Windows i innych podczas budowania na Linuksie? Tak jak mam WindowWin.cpp i WindowLinux.cpp.
Próbowałem co sugested ale cant get to działa:
#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})
ja niby mam to działa teraz .. tylko, że chcę podfoldery dla nagłówków i pliki źródłowe wewnątrz grupy źródłowej.
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})
Herezje moje rozwiązanie :)
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})
Spójrz na http://stackoverflow.com/questions/27175754/what-are-all-build-and-zero-check-and-do-i-need-them, aby zobaczyć, czym są ZERO_CHECK i ALL_BUILD. – sashoalm