banner
cells

cells

为美好的世界献上 bug

CMake の記録

プロジェクト構造について:

.
├── CMakeLists.txt
├── func
   ├── CMakeLists.txt
   ├── include
   └── func.h
   ├── lib
   └── libfunc_lib.a
   └── src
       └── func.cpp
└── main.cpp

サブモジュールの CMakeLists.txt ファイル:

# ./func/CMakeLists.txt
cmake_minimum_required(VERSION 3.10)

# project(func_lib LANGUAGES CXX VERSION 1.0)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

set(func_src
    ${CMAKE_CURRENT_SOURCE_DIR}/src/func.cpp
)

# add_library(${PROJECT_NAME} SHARED ${func_src})
# add_library(${PROJECT_NAME} STATIC ${func_src})
add_library(func_lib STATIC ${func_src})

# ライブラリのヘッダーファイルを指定
# target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(func_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

プロジェクトのルートディレクトリ CMakeLists.txt ファイル:

# ./CMakeLists.txt
cmake_minimum_required(VERSION 3.10)

project(main LANGUAGES CXX VERSION 1.0)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(${PROJECT_SOURCE_DIR}/func)

set(src
    ${PROJECT_SOURCE_DIR}/main.cpp
)

add_executable(${PROJECT_NAME} ${src})

target_link_libraries(${PROJECT_NAME} PRIVATE func_lib)

サブモジュールの CMakeLists.txt に project() コマンドが含まれていない場合、PROJECT_SOURCE_DIR 変数はプロジェクトのルートディレクトリを表します:

image

サブモジュールの CMakeLists.txt に project() コマンドがある場合、PROJECT_SOURCE_DIR 変数は現在 project() を含む CMakeLists.txt が存在するディレクトリを表します:

2024-10-02-15-53

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。