[英]cmake to create Makefile with *.cpp rule
我剛剛開始使用 cmake,我已經閱讀了一些教程並開始使用基本的東西。
但是,目前我的 CMakesList.txt 生成一個 Makefile,其中每個 .cpp 都顯式命名。 這意味着,每當我向項目添加新的 .cpp 時,我都需要重新運行 cmake,然后才能進行制作。 雖然這不是什么大問題,但它仍然有點煩人。
由於 Makefiles 可以做類似SOURCES=*.cpp
事情,我想可能有辦法告訴 cmake 用這樣的規則生成 Makefile!?
我知道我能做到
cmake_minimum_required(VERSION 2.8)
file(GLOB SRC
"*.h"
"*.cpp"
)
add_executable(main ${SRC})
但是我仍然需要重新運行cmake。
據我所知,這樣做的方法就像你說的那樣,缺點是每次添加文件時都必須運行cmake。
我通常要做的就是制作一個調用cmake的自定義目標。 它是這樣的
ADD_CUSTOM_TARGET(update
COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Cmake and build"
)
有了這個,您可以調用make update
,它將首先調用cmake捕獲所有文件,然后啟動構建過程。
只有在您更改文件時才必須重新運行Cmake,因為CMake編譯CMakeLists.txt一次,然后生成一個更高效的緩存中間格式。 (如果你沒有添加任何新文件,那么運行make命令就好了)。
請注意,CMake不能使用MakeFile的等效功能,否則會導致所有文件依賴性。 CMake不能僅用於Makefile,因為它只使用目標構建腳本的一部分功能。
此外,如果您已經直接使用CMake,則不再需要生成makefile,使用CMake,並且只有在需要將項目發送到具有Makefile但不是CMake的客戶端時才生成makefile。
你可以用這個:
file( GLOB_RECURSE
source_files
./*
)
add_executable(main ${source_files})
最好將所有cpp和h文件放在src目錄中,然后:
file( GLOB_RECURSE
source_files
src/*
)
add_executable(main ${source_files})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.