#author("2022-09-12T00:24:50+09:00","","")
[[C]]

*cmake [#v1612a6d]

 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