C

cmake

cmake_minimum_required(VERSION 3.10)

# TARGET 情報
set(TARGET sample)
set(VERSION 0.0.1.0)
set(DESCRIPTION "sample application")
set(HOMEPAGE_URL "https://...")

# 以下、少し簡単にコンパイルするための設定
set(SRCDIR app/src)
set(INCDIR app/include)

# C++ Version
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")

set(CMAKE_CFLAGS "${CMAKE_C_FLAGS} -DSAMPLE_DEFINE=0x1234)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSAMPLE_DEFINE2")

# .so or .a
option(BUILD_SHARE_LIBS "Build using shared libraries" ON)

#project
project(${TARGET}
  VERSION ${VERSION}
  DESCRIPTION ${DESCRIPTION}
  HOMEPAGE_URL ${HOMEPAGE_URL}
)

# サブディレクトリ追加 (リンクするライブラリディレクトリなど)
add_subdirectory(libxxx)
list(APPEND EXTRA_LIBS xxx)

file(GLOB SRCS ${SRCDIR}/*.c ${SRCDIR}/*.cpp ${SRCDIR}/*.s)
file(GLOB INCS ${INCDIR}/*.h ${INCDIR}/*.hpp)
add_executable(${TARGET} ${SRCS})

# OPTIONS
# コンパイラ依存 フラグなど
set(gcc_like_c   "$<COMPILE_LANG_AND_ID:C,Clang,GNU>")
set(gcc_like_cxx "$<COMPILE_LANG_AND_ID:CXX,Clang,GNU>")
set(msvc_cxx     "$<COMPILE_LANG_AND_ID:CXX,MSVC>")
#
target_compile_options(${TARGET} PUBLIC
  "$<${gcc_like_cxx}:$<BUILD_INTERFACE:-Wall;-O3>>"
  "$<${gcc_like_c}:$<BUILD_INTERFACE:-Wextra;-O1>>"
  "$<${msvc_cxx}:$<BUILD_INTERFACE:-W3>>"
target_compile_features(${TARGET} PUBLIC cxx_std_17)
target_compile_definitions(${ARGET} PUBLIC XXX=1;YYY=2)

configure_file(app/include/config.h.in app/include/config.h)

target_lik_libraries(
  ${TARGET}
  PUBLIC
  ${EXTRA_LIBS}
)

target_include_directories(
  ${TARGET}
  PUBLIC
  "${PROJECT_BINARY_DIR}/app/include"
)

install(TARGETS ${TARGET} DESTINATION bin)
install(FILES ${INC} DESTINATION include)
install(FILES ${PROJCT_BINARY_DIR}/app/include/config.h DESTINATION include)

set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${sample_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${sample_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${sample_VERSION_PATCH}")
set(PACK_SOURCE_GENERATOR "TGZ")
include(CPack)
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS