簡體   English   中英

cmake 使用 *.cpp 規則創建 Makefile

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM