User Tools

Site Tools


programming:cmake

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
programming:cmake [2022/04/13 04:42]
odagawa
programming:cmake [2022/07/21 06:15] (current)
odagawa
Line 2: Line 2:
  
 CMake は実行ファイル作成時の依存関係を整理し,Makefile などを作成してくれるソフトウェア.\\ CMake は実行ファイル作成時の依存関係を整理し,Makefile などを作成してくれるソフトウェア.\\
-スクラッチで書いたことはないが,どこかから何かしらをコピペしながら覚えていくのがよいと思う.+スクラッチで書いたことはないが,どこかから何かしらをコピペしながら覚えていくのがよいと思う.\\ 
 +おそらく最小単位は以下の通り (MyApp.cpp から MyApp を作成) 
 + 
 +<code> 
 +cmake_minimum_required(VERSION 3.10.2) 
 +add_executable(MyApp MyApp.cpp) 
 + 
 +</code>
  
 ===ROOT=== ===ROOT===
Line 17: Line 24:
 message("-- Required ROOT components are: ${ROOT_REQUIRED_COMPONENTS}") message("-- Required ROOT components are: ${ROOT_REQUIRED_COMPONENTS}")
 </code> </code>
 +
 +そして,
 +<code>
 +target_include_directories(MyApp PRIVATE ${ROOT_INCLUDE_DIRS})
 +target_link_libraries(MyApp ${ROOT_LIBRARIES})
 +</code>
 +とすれば使えるはず.
  
 ===boost=== ===boost===
Line 44: Line 58:
  
 ===自作ライブラリ=== ===自作ライブラリ===
 +
 +いろいろ調べてコピペしたので間違ってても保証はできない.\\
 +少なくとも KEKCC の僕の環境では動いた.
 +<code>
 +SET(MYLIB_SERACH_PATHS
 +  /usr/local
 +  /opt/local
 +  ${MYLIB_PATH}
 +)
 +
 +FIND_PATH(MYLIB_INCLUDE_DIR MyLib.hpp
 +  HINTS
 +  $ENV{MYLIBDIR}
 +  PATH_SUFFIXES include/mylib/dir include
 +  PATHS ${MYLIB_SEARCH_PATHS}
 +)
 +
 +FIND_LIBRARY(MYLIB_TEMP
 +  NAMES MyLib
 +  HINTS
 +  ${ENV{MYLIBDIR}
 +  PATH_SUFFIXES lib64/mylib/dir lib/mylib/dir
 +  PATHS ${MYLIB_SEARCH_PATHS}
 +)
 +
 +IF(MYLIB_TEMP)
 +  SET(MYLIB ${MCLIB_TEMP} CACHE STRING "Where mylib Library can be found")
 +  SET(MCLIB_TEMP "${MYLIB_TEMP}" CACHE INTERNAL "")
 +ENDIF(MYLIB_TEMP)
 +
 +INCLUDE(FindPackageHandleStandardArgs)
 +
 +FIND_PACKAGE_HANDLE_STANDARD_ARGS(MyLib REQUIRED_VARS MYLIB MYLIB_INCLUDE_DIR)
 +
 +</code>
programming/cmake.1649824920.txt.gz · Last modified: 2022/04/13 04:42 by odagawa