プロジェクト構造について:
.
├── 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
変数はプロジェクトのルートディレクトリを表します:
サブモジュールの CMakeLists.txt に project()
コマンドがある場合、PROJECT_SOURCE_DIR
変数は現在 project()
を含む CMakeLists.txt が存在するディレクトリを表します: