Cmake là gì

Gần trên đây tôi tất cả cơ hội va vào CMake, phải có được sự hiểu biết một ít về nó. Hy vọng hữu ích mang lại anh em.

Bạn đang xem: Cmake là gì

Nó cung ứng chức năng ra đời Maketệp tin một bí quyết hiệu quả. Nhất là đối với những dự án phức hợp. Nó cũng hỗ trợ thêm các bộ sinc khác nhằm sinh cấu trúc quản lý source cho các IDE không giống nhau nlỗi Project cho Visual Studio, etc.Trong số lượng giới hạn, tôi vẫn nói tới việc áp dụng CMake nhằm build một simple project bên trên Linux.

Ta vẫn luân chuyển xung quanh ví dụ kinh khủng là tạo ra công tác Hello World, nhưng mà thử dùng hiển thị câu đó bên trên ít nhất 3 ngữ điệu. ja,en,vi. Chương trình đang viết bởi ngôn ngữ C.

(Link tđắm đuối khảo)

Ví dụ được triển khai trong thư mục /home/oedev/Code/CMake

Nội dung chính bao gồm những phần sau,

Cmùi hương trình Hello World cho En.Thêm ngôn ngữ Ja, Vi vào công tác trên.Thêm ngữ điệu Spain(Es) trong một tình huống không giống.

============================================================

1.Chương thơm trình Hello World đến En

Ta sẽ có file source như sau:maintiện ích.c

#include//// Greeting message in En//void greeting_en()printf("Hello world n");//// Main functions//int main(int argc, char* argv<>)greeting_en();return 0;File áp dụng mang đến CMake là một trong tệp tin CMakeLists.txt.Nó sẽ có được ngôn từ nlỗi sau:

## Điều khiếu nại về version về tối tphát âm để gọi được tệp tin CMakeList.txt này.#cmake_minimum_required(VERSION 2.8.12)## Tên project thường đã là tên gọi file chạy#project (helloworld)## Định nghĩa mối liên quan thân tệp tin chạy và tệp tin nguồn#add_executable(hellworld mainphầm mềm.c)Đặt cả 2 file bên trên vào cùng 1 thỏng mục:Nội dung được bình chọn bằng lệnh tree như sau

CMake├── CMakeLists.txt└── mainapp.cFile CMakeList.txt chính là file tư tưởng source thực hiện ngôn từ nhưng mà CMake hiểu được.Đến đây, ta triển khai công việc bao gồm của CMake. Đó là xuất hiện Makefiles mang đến project đơn giản này. Ta bắt buộc chuyển vào phía bên trong tlỗi mục CMake trước khi chạy lệnh dưới đây:

$ cmake .Dấu . vùng phía đằng sau vô cùng quan trọng đặc biệt. Đó là con đường dân đến tlỗi mục không file CMakeList.txt xuất xắc có thể gắng nó bởi $(PWD) vào trường đúng theo này.Nội dung chạy kết thúc yêu cầu như thế này:

oedev
OECrossDev:~/Code/CMake$ cmake .-- The C compiler identification is GNU 4.8.2-- The CXX compiler identification is GNU 4.8.2-- Cheông chồng for working C compiler: /usr/bin/cc-- Cheông xã for working C compiler: /usr/bin/cc -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Cheông xã for working CXX compiler: /usr/bin/c++-- Cheông xã for working CXX compiler: /usr/bin/c++ -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Configuring done-- Generating done-- Build files have been written to: /home/oedev/Code/CMakeNội dung tlỗi mục sau thời điểm chạy lệnh trên:

oedev
OECrossDev:~/Code/CMake$ tree -L 2.├── CMakeCache.txt├── CMakeFiles│ ├── 2.8.12.2│ ├── cmake.check_cache│ ├── CMakeDirectoryInformation.cmake│ ├── CMakeđầu ra.log│ ├── CMakeTmp│ ├── hellworld.dir│ ├── Makefile2│ ├── Maketệp tin.cmake│ ├── progress.marks│ └── TargetDirectories.txt├── cmake_install.cmake├── CMakeLists.txt├── maintiện ích.c└── MakefileNhư ta thấy, có khá nhiều tệp tin và thỏng mục được tạo nên Lúc ta chạy CMake. Nhưng vào số lượng giới hạn bài bác này ta chỉ quyên tâm mang lại Makefile thôi.Ta cũng thấy rằng lịch trình chưa được build, hay có thể nói CMake chỉ làm cho trách nhiệm của chính nó mang đến đây thôi. Tức là có mặt Makefile , rồi ngủ.

Giờ muốn build project ta vừa chế tạo ra lúc đầu (chỉ có 1 file .c), ta sẽ chạy Makefiles thôi.

oedev
OECrossDev:~/Code/CMake$ makeScanning dependencies of target hellworld<100%> Building C object CMakeFiles/hellworld.dir/mainphầm mềm.c.oLinking C executable hellworld<100%> Built target hellworldKết quả chiếm được nlỗi sau

oedev
OECrossDev:~/Code/CMake$ lsCMakeCache.txt CMakeFiles cmake_install.cmake CMakeLists.txt hellworld maintiện ích.c MakefileTa đã thây file helloword được ra đời, phía trên chính là tệp tin chạy:

oedev
OECrossDev:~/Code/CMake$ ./hellworldHello worldGiờ ta đang thêm lời kính chào bằng ngôn từ Ja, Vi vào công tác bên trên.

2.Thêm ngữ điệu Ja, Vi vào lịch trình bên trên.

Ta vẫn tổ chức triển khai lại source như sau:

oedev
OECrossDev:~/Code/CMake$ tree.├── CMakeLists.txt├── include│ ├── greetings_en.h│ ├── greetings_ja.h│ └── greetings_vi.h└── src ├── greetings_en.c ├── greetings_ja.c ├── greetings_vi.c └── maintiện ích.cDo cấu tạo tlỗi mục sẽ chuyển đổi, địa điểm những file mối cung cấp cũng như vậy.Ta bắt buộc thay đổi tệp tin CMakeList.txt nhằm tương xứng cùng với chuyển đổi này.Nội dung file này đã thành nlỗi sau:

*CMakeList.txt*## Điều kiện về version#cmake_minimum_required(VERSION 2.8.12)## Tên project#project (helloworld)## Knhị bảo tlỗi mục chứa tệp tin header (.h)#include_directories(include)## Thêm từ file nguồn bởi lệnh *set*#set(SOURCES src/mainapp.c src/greetings_en.c src/greetings_ja.c src/greetings_vi.c)## Thêm một tập những tệp tin bởi một bộ lọc trong thỏng mục không source# Đây là cách nkhô giòn cùng thịnh hành hơn.##file(GLOB SOURCES "src/*.c")## Định nghĩa sự tương quan thân tệp tin chạy và các file mối cung cấp.#add_executable(hellworld $SOURCES)Ta đang chạy cmake để sinch Makefiles và build lịch trình với Makefiles coi hiệu quả vắt nào:Với những sử dụng hàm set:Chạy cmake

oedev
OECrossDev:~/Code/CMake$ cmake .-- The C compiler identification is GNU 4.8.2-- The CXX compiler identification is GNU 4.8.2-- Check for working C compiler: /usr/bin/cc-- Cheông xã for working C compiler: /usr/bin/cc -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Chechồng for working CXX compiler: /usr/bin/c++-- Cheông xã for working CXX compiler: /usr/bin/c++ -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Configuring done-- Generating done-- Build files have sầu been written to: /home/oedev/Code/CMakeChạy Make

oedev
OECrossDev:~/Code/CMake$ makeScanning dependencies of target hellworld< 25%> Building C object CMakeFiles/hellworld.dir/src/mainứng dụng.c.o< 50%> Building C object CMakeFiles/hellworld.dir/src/greetings_en.c.o< 75%> Building C object CMakeFiles/hellworld.dir/src/greetings_ja.c.o<100%> Building C object CMakeFiles/hellworld.dir/src/greetings_vi.c.oLinking C executable hellworld<100%> Built target hellworldKiểm tra thỏng mục

oedev
OECrossDev:~/Code/CMake$ tree -L 2.├── CMakeCabịt.txt├── CMakeFiles│ ├── 2.8.12.2│ ├── cmake.check_cache│ ├── CMakeDirectoryInformation.cmake│ ├── CMakeOutput.log│ ├── CMakeTmp│ ├── hellworld.dir│ ├── Makefile2│ ├── Maketệp tin.cmake│ ├── progress.marks│ └── TargetDirectories.txt├── cmake_install.cmake├── CMakeLists.txt├── hellworld├── include│ ├── greetings_en.h│ ├── greetings_ja.h│ └── greetings_vi.h├── Makefile└── src ├── greetings_en.c ├── greetings_ja.c ├── greetings_vi.c └── mainapp.cKết trái chạy chương trình

oedev
OECrossDev:~/Code/CMake$ ./hellworldHello worldKonichiwa!!!Xin chao !!!!Lúc nỗ lực set comm& bởi commvà file (GLOB) thì cho công dụng gần như như nhau nhau.

2.1 Tạo tlỗi mục để build riêng

À, gồm một điểm cần nói ở chỗ này, vừa ta có thấy không hề ít file (ngoại trừ Makefile) được ra đời trong quy trình cmake chạy.Nếu để các tệp tin đó chung cùng với thư mục những tệp tin source, header ta vừa tạo nên sẽ tạo ra vấn đề, cạnh tranh quản lý. Ta sẽ tống những tệp tin kia vào 1 tlỗi mục, Hotline là thư mục build.Cấu trúc thư mục vẫn đổi khác như sau:

oedev
OECrossDev:~/Code/CMake$ tree.├── build├── CMakeLists.txt├── include│ ├── greetings_en.h│ ├── greetings_ja.h│ └── greetings_vi.h└── src ├── greetings_en.c ├── greetings_ja.c ├── greetings_vi.c └── mainứng dụng.cGiờ ta đã tiến hành toàn cục quy trình cmake với make phía bên trong thỏng mục build

oedev
OECrossDev:~/Code/CMake/build$ cmake ..-- The C compiler identification is GNU 4.8.2-- The CXX compiler identification is GNU 4.8.2-- Cheông chồng for working C compiler: /usr/bin/cc-- Cheông chồng for working C compiler: /usr/bin/cc -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working CXX compiler: /usr/bin/c++-- Cheông xã for working CXX compiler: /usr/bin/c++ -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Configuring done-- Generating done-- Build files have sầu been written to: /home/oedev/Code/CMake/buildTa sử dụng .. nỗ lực bởi .

Xem thêm: Transcode Là Gì ? Nghĩa Của Từ Transcode Trong Tiếng Việt

nhỏng sống các câu lệnh trước, do ta đang gửi vào thỏng mục ./build yêu cầu file CMakeList.txt sinh sống tlỗi mục phụ vương của thư mục này. Ta yêu cầu nói mang lại cmake biết điều ấy.Tiếp tục chạy lệnh make, ta sẽ có được câu chữ thỏng mục CMake vẫn nhỏng sau:

oedev
OECrossDev:~/Code/CMake$ tree -L 3.├── build│ ├── CMakeCabít.txt│ ├── CMakeFiles│ │ ├── 2.8.12.2│ │ ├── cmake.check_cache│ │ ├── CMakeDirectoryInformation.cmake│ │ ├── CMakeđầu ra.log│ │ ├── CMakeTmp│ │ ├── hellworld.dir│ │ ├── Makefile2│ │ ├── Makefile.cmake│ │ ├── progress.marks│ │ └── TargetDirectories.txt│ ├── cmake_install.cmake│ ├── hellworld│ └── Makefile├── CMakeLists.txt├── include│ ├── greetings_en.h│ ├── greetings_ja.h│ └── greetings_vi.h└── src ├── greetings_en.c ├── greetings_ja.c ├── greetings_vi.c └── maintiện ích.cNlỗi ta thấy, toàn thể ngôn từ của quy trình chạy cmake cùng make được duy trì vào thư mục ./build, phần đinc nghĩa source code bên phía ngoài không bị ảnh hưởng gì hết.Để chạy công tác, ta buộc phải vào thỏng mục ./buildKết trái vẫn luôn là :

oedev
OECrossDev:~/Code/CMake/build$ ./hellworld Hello worldKonichiwa!!!Xin chao !!!!3. Thêm ngữ điệu Spain(es) trong một trường hợp khácTình huống không giống sinh sống đây là gì? Tôi mong muốn kể tới tình huống nlỗi sau:Giả sử ta bao gồm một tlỗi viện cất lời chào mang lại 3 ngôn ngữ En, Ja, Vi.Ta đề xuất thêm ngôn ngữ Es để có một chương trình với loại chào của 4 ngôn ngữ En, Ja, Vi, Es.

Trước hết, ta yêu cầu đọc tlỗi viện như thế nào? Trong C/C++ nhằm sử dụng lại được mã nguồn hoặc nhằm bảo đảm mã nguồn. Người ta thường build hầu hết mã mối cung cấp mong muốn áp dụng lại hoặc gửi cho người không giống thành những thỏng viện. Về mặt file ta thấy được, thư viện sẽ sở hữu được 2 loại: tlỗi viện tĩnh(.a) cùng tlỗi viện động(.so).Các hàm ta đang viết vào file .c đã ở trong các tệp tin tlỗi viện này.

Nếu tlỗi viện chỉ tất cả cụ thôi thì chưa đầy đủ, ta cần phải biết tlỗi viện đó cung ứng gì cho bên ngoài hoàn toàn có thể áp dụng được. Có thể là đổi thay toàn bộ, rất có thể là hàm.

Các hàm với biến đổi này phải đặt nơi nào đó trong số tệp tin header . Rồi lúc build với source mà lại ta viết, trình biên dịch vẫn biết phương pháp compile hoặc links mang lại phù hợp.File header thường xuyên được cung ứng kèm theo những file .a(.so). Nếu không có, thì yêu cầu có tài liệu bộc lộ.Có cả tài liệu cùng file header là vấn đề lý tưởng phát minh độc nhất vô nhị.

Giả định rằng, ta có tlỗi viện không cách xử trí hiển thị 3 loại kính chào En, Ja, Vi. Nhưng ta chỉ gồm tệp tin header diễn đạt prototype của các hàm mà ko thấy được source của chính nó.

3.1 Build tlỗi viện tĩnh

Kết trái của đoạn này vẫn là file thư viện greetings_en_ja_vi.a cùng 3 file header đi kèm.Sau đó ta rất có thể xóa 3 file source(.c) đi được.Về cấu tạo tệp tin, vày tlỗi viện ko đựng hàm main() được, ta buộc phải bỏ file mainphầm mềm.c đi.Nhớ nhé, thư viện thì chỉ việc file header thôi là sử dụng được rồi.Thư viện mẫu mực sẽ không yêu cầu mang đến coi code, ta chỉ việc xem biểu thị API hoặc file header là hoàn toàn có thể dùng được rồi.Cấu trúc file mới đang như vậy này:

oedev
OECrossDev:~/Code/CMake$ tree -L 2.├── CMakeLists.txt├── include│ ├── greetings_en.h│ ├── greetings_ja.h│ └── greetings_vi.h└── src ├── greetings_en.c ├── greetings_ja.c └── greetings_vi.cGiờ, ta cần sửa lại tệp tin CMakeList.txt, nó vẫn thành nlỗi sau:CMakeList.txt

## Điều kiện phiên phiên bản nhỏ nhất của CMake#cmake_minimum_required(VERSION 2.8.12)## Tên project#project (multilang_greetings)## Thêm thỏng mục cất các tệp tin header (.h)#include_directories(include)## Thêm một tập những tệp tin source#file(GLOB SOURCES "src/*.c")## Thư viện bao hàm đa số source làm sao.# Loại thư viện là STATIC (tĩnh)# Tên thỏng viện có thể không giống tên *project*#add_library(greetings_enjavi STATIC $SOURCES)Chạy tiếp cmake với make trong thỏng mục build:Ta sẽ tiến hành công dụng như sau:Chạy Cmake, hiệu quả gần như ko thay đổi so với trước:

oedev
OECrossDev:~/Code/CMake/build$ cmake ..-- The C compiler identification is GNU 4.8.2-- The CXX compiler identification is GNU 4.8.2-- Cheông xã for working C compiler: /usr/bin/cc-- Chechồng for working C compiler: /usr/bin/cc -- works-- Detecting C compiler ABI info-- Detecting C compiler ABI info - done-- Check for working CXX compiler: /usr/bin/c++-- Cheông xã for working CXX compiler: /usr/bin/c++ -- works-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Configuring done-- Generating done-- Build files have been written to: /home/oedev/Code/CMake/builChạy make:

oedev
OECrossDev:~/Code/CMake/build$ makeScanning dependencies of target greetings_enjavi< 33%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_vi.c.o< 66%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_ja.c.o<100%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_en.c.oLinking C static library libgreetings_enjavi.a<100%> Built target greetings_enjaviTa thấy rằng tên thỏng viện có mặt là libgreetings_enjavi.a, điều đó chi phí tố lib được phân phối thương hiệu thỏng viện ta vẫn knhì báo cùng với add_library trong tệp tin CMakeList.txt.Ta rất có thể kiểm soát coi thư viện này chứa cái gì, bằng câu lệnh ar

oedev
OECrossDev:~/Code/CMake/build$ ar -t libgreetings_enjavi.agreetings_vi.c.ogreetings_ja.c.ogreetings_en.c.oTa vẫn thấy không tồn tại file chạy nào được ra đời trong tlỗi mục build. Đúng may mắn, ta nên build tlỗi viện.Ta cũng kiểm soát kích thước tệp tin này:

oedev
OECrossDev:~/Code/CMake/build$ ls -lh libgreetings_enjavi.a -rw-rw-r-- 1 oedev oedev *4.9K* 8月 17 23:13 libgreetings_enjavi.aĐó là 4.9K (dung tích NET), bám trên đĩa kiên cố buộc phải rộng.

3.2 Build tlỗi viện động

Ta đã build tlỗi viện tĩnh, được file .a (một tệp ZIP không 3 tệp tin .o). Kích thước 4.9K(NET)Giờ ra build tlỗi viện cồn.Vậy rượu cồn cùng với tĩnh không giống nhau ngơi nghỉ chỗ nào, tại vì sao bắt buộc build cả đụng làm gì.Cthị xã tương đối lâu năm, tôi đã trình diễn ngắn thêm gọn gàng. Thỏng viện tĩnh, tức là toàn bộ cách xử lý của các hàm số đông phía trong thỏng viện đó rồi. lấy ví dụ, nó Call hàm printf trong source .c, thì khi tạo nên thỏng viện tĩnh, nó ôm toàn cục giải pháp xử lý của printf vào trong file .a mà ta vừa sản xuất.Còn thư viện rượu cồn, thì không có tác dụng cụ, nó gìn giữ lên tiếng báo là, khu vực này Hotline hàm printf cùng với các ttê mê số x,y,z gì đó. Khi như thế nào chạy thì hỏi tiếp coi hàm đó chỗ nào, xử trí thế làm sao rồi bắt đầu truyền những tđắm say số để xử trí.

Cấu trúc các tệp tin source, header không biến đổi gì đối với khi build thư viện tĩnh.Ta phải chuyển đổi tệp tin CMakeList.txt một chút:Nó sẽ sở hữu được câu chữ như vậy này:

## Điều kiện phiên bản nhỏ tuổi tốt nhất của CMake#cmake_minimum_required(VERSION 2.8.12)## Tên project#project (multilang_greetings)## Thêm thư mục đựng các tệp tin header (.h)#include_directories(include)## Thêm một tập các file source#file(GLOB SOURCES "src/*.c")## Thư viện bao hàm hầu như source làm sao.# Loại thư viện là SHARED(động, thực ra ko gần kề nghĩa mang lại lắm)# Tên tlỗi viện rất có thể không giống thương hiệu *project*#add_library(greetings_enjavi SHARED $SOURCES)Kết trái của lúc chạy CMake là không thay đổi gì, còn khi chạy make, nó sẽ như vậy này:

oedev
OECrossDev:~/Code/CMake/build$ makeScanning dependencies of target greetings_enjavi< 33%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_vi.c.o< 66%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_ja.c.o<100%> Building C object CMakeFiles/greetings_enjavi.dir/src/greetings_en.c.oLinking C shared library libgreetings_enjavi.so<100%> Built target greetings_enjaviTlỗi viện được hình thành là libgreetings_enjavi.so, cũng bước đầu cùng với tiền tố lib, tuy nhiên phần mở rộng là .so.Với tlỗi viện cồn, ta đang đánh giá nội dung nhỏng sau:

oedev
OECrossDev:~/Code/CMake/build$ ldd libgreetings_enjavi.so linux-vdso.so.1 => (0x00007fff3e7fc000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6cf04e7000) /lib64/ld-linux-x86-64.so.2 (0x00007f6cf0acd000)Thực ra mình cũng thiếu hiểu biết kĩ mấy cái này, cực tốt không lý giải gì. ;))

3.3 Thêm ngôn từ Es

Giờ ta vẫn bao gồm trong tay rất thư viện với 2 phiên phiên bản, tĩnh và rượu cồn.Ta đang viết code sử dụng chúng, bên cạnh đó thêm công dụng lời kính chào bằng tiếng Spain nữa.

Với thỏng viện tĩnhGần như khôn xiết tương tự tlỗi viện đụng, chỉ không giống tên file thỏng viện thôi.Ta chỉ cần nắm libgreetings_enjavi.so trong file CMakeList.txt ở phần bên dưới bởi libgreetings_enjavi.a, ta đã build tại phần bên trên thôi.

Với thỏng viện độngCấu trúc thỏng mục đang nlỗi sau:

oedev
OECrossDev:~/Code/CMake$ tree -L 2.├── build├── CMakeLists.txt├── include│ ├── greetings_en.h│ ├── greetings_es.h│ ├── greetings_ja.h│ └── greetings_vi.h├── lib│ └── libgreetings_enjavi.so└── src ├── greetings_es.c └── maintiện ích.cTa cũng cần được sửa lại file CMakeList.txt nữaNó đang thành như thế này:CMakeList.txt

## Ràng buộc về version#cmake_minimum_required(VERSION 2.8.12)## Tên project#project (multilang_greetings)## Knhì báo địa điểm chưa tlỗi viện (.so)#mix (PROJECT_LINK_LIBS libgreetings_enjavi.so)link_directories(lib)## Nơi chưa những tệp tin header(.h)#include_directories(include)## Thêm source .c bằng lệnh set##set(SOURCES src/greetings_es.c)## Thêm source .c bằng tệp tin GLOB#file(GLOB SOURCES "src/*.c")## File chạy sẽ tiến hành tạo như thế nào# Sử dụng thỏng viện đã knhì báo qua PROJECT_LINK_LIBS#add_executable(helloworld $SOURCES)target_link_libraries(helloworld $PROJECT_LINK_LIBS)Sau kia, ta cũng chạy CMake cùng Make để tạo ra tệp tin chạy:Kết trái của câu hỏi chạy CMake hầu như vẫn vậy.Còn tác dụng của Make sẽ như thế này:

oedev
OECrossDev:~/Code/CMake/build$ makeScanning dependencies of target helloworld< 50%> Building C object CMakeFiles/helloworld.dir/src/mainứng dụng.c.o<100%> Building C object CMakeFiles/helloworld.dir/src/greetings_es.c.oLinking C executable helloworld<100%> Built target helloworldFile chạy là helloworldKết trái chạy của file này đang như vậy này:

oedev
OECrossDev:~/Code/CMake/build$ ./helloworldHello worldKonichiwa!!!Xin chao !!!!Hola!!!Trên trên đây chỉ thể hiện bí quyết sử dụng CMake với một ví đơn giản và dễ dàng trên Linux( tôi dung Ubuntu). Do bài viết sẽ thừa nhiều năm, tôi không miêu tả giải pháp sử dụng bên trên Window (mang đến Visual Studio) của CMake. Về cơ bạn dạng, chúng ta sẽ sở hữu được một chương trình CMake (bao gồm GUI) nhằm giúp đỡ vấn đề export một source cất file CMakeList.txt ra một thỏng mục chứa project Visual Studio. Có mấy điểm chăm chú sống đây;

*

Thứ đọng từ thực hiện đang là:

là thư mục mang lại source code, đang chứa file CMakeList.txt là tlỗi mục đựng cả project Visual Studio. nhằm chọn loại Project đang export với các tđắm đuối số kèm theo. để xem hiệu quả.

Crúc ý ngơi nghỉ đấy là dù ta tất cả export ra project rồi tuy thế source nhưng mà project kia không số đông sinh hoạt dạng tsay mê chiếu mang đến những tệp tin source cất vào thỏng mục lựa chọn bởi . Như vậy tạo thành mang đến source ban đầu tự do cùng với project, dễ dàng update lúc đề xuất build trên những hệ quản lý và điều hành. Nhưng phải để ý lúc dịch chuyển thỏng mục source kia.