簡體   English   中英

CMakeLists.txt結構

[英]CMakeLists.txt structure

我想開始一個cmake項目,我有很多文件。 結構如下。

types.h包含在functions.hdag.h

functions.h包含在basic.cpp, br.cpp, IR.cppUIR.cpp

functions.hdag.h包含在dag.cpp, dag-cmp.cpp, dag-cover.cpp, dag-make.cppdag-sum.cpp

顯然,我在同一目錄中也有一個main.cpp ,其中包括types.h, dag.hfunctions.h

對於CMakeLists.txt和cmake項目,哪個是最佳解決方案?

cmake_minimum_required(VERSION 3.12)
project(myproject)

set(CMAKE_CXX_STANDARD 14)

add_executable(myproject all.cpp all.h)
  1. 這可能是一種格式。 輸入以空格分隔的.cpp和.h文件。 如果cpp / .h文件包含空格,則將其用雙引號引起來。

  2. 您可以根據需要編輯C ++ Standard。

  3. 這是一個非常基本的設置,可以根據需要隨意添加內容。

我認為,沒有最好的解決方案,但是我希望以下幾點:

cmake_minimum_required(VERSION 3.12)
project(myproject)

set(SOURCE_FILES
    basic.cpp
    br.cpp
    IR.cpp
    UIR.cpp
    dag.cpp
    dag-cmp.cpp
    dag-cover.cpp
    dag-make.cpp
    dag-sum.cpp
    main.cpp
)

set(HEADER_FILES
    types.h
    functions.h
    dag.h
)

add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES})

target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_14)
  • 使用變量${PROJECT_NAME}可以輕松更改項目名稱,因為您只需更改一次即可。
  • 包括所有頭文件和源文件,可使IDE知道那些文件屬於項目。
  • 與更改CMake變量相比,設置目標屬性應更為可取。 因此,我鼓勵使用target_compile_features而不是set(CMAKE_CXX_STANDARD 14)

考慮所有文件都在src /文件夾中。 CMake可以自動列出它們:

file(GLOB_RECURSE source_files src/*)
add_executable(exec ${source_files})

第一行將查找src文件夾(及其子文件夾)中的所有文件,並將列表存儲在source_files var中。 第二行將從source_files var加載文件並將其添加到可執行文件“ exec”中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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