2017
0528
cmakeチートシート
すぐ忘れるのでここをチートシート化しよう。
構成 solution
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(hello) # .slnsubdirectory
https://cmake.org/cmake/help/latest/command/add_subdirectory.html
ADD_SUBDIRECTORY(src)もしくは
SUBDIRS(FOO BAR HOGE FUGA)target exe
https://cmake.org/cmake/help/latest/command/add_executable.html
ADD_EXECUTABLE(hello
main.cpp
renderer.cpp
scene.cpp
)file を集める例
FILE(GLOB SRC
*.cpp
*.h
)
ADD_EXECUTABLE(hello
${SRC}
)fo winmain
ADD_EXECUTABLE(hello_windows WIN32
${SRC}
)static lib
https://cmake.org/cmake/help/latest/command/add_library.html
ADD_LIBRARY(renderer STATIC
renderer.cpp
)dll
ADD_LIBRARY(renderer SHARED
renderer.cpp
)compile compiler options 全体
SET(CMAKE_CXX_FLAGS "-Wall")ターゲット指定
TARGET_COMPILE_OPTIONS(foo PUBLIC "#x3C;#x3C;CONFIG:DEBUG>:${MY_DEBUG_OPTIONS}>")
TARGET_COMPILE_OPTIONS(foo PUBLIC "#x3C;#x3C;CONFIG:RELEASE>:${MY_RELEASE_OPTIONS}>")include path 全体 以降の ADD_XXX に対して有効になる
INCLUDE_DIRECTORIES(libpath/include)ターゲット指定 PUBLIC の部分はよくわからぬ。
TARGET_INCLUDE_DIRECTORIES(HELLO PUBLIC
${BOOST_DIR}
)define 全体 以降の ADD_XXX に対して有効になる
ADD_DEFINITIONS(-DWITH_OPENCV2)ターゲット指定 PUBLIC の部分はよくわからぬ。
-D なし
TARGET_COMPILE_DEFINITIONS(TARGET PUBLIC
WITH_OPENCV2=1
)link link path
LINK_DIRECTORIES(libpath/lib)x86 と x64 で違うパスにしたい時は?
LINK_LIBRARIES
TARGET_LINK_LIBRARIES
TARGET_LINK_LIBRARIES(MediaSessionPlaybackExample
Mf
Mfplat
Mfuuid
strmiids
)Debug Release の切り分け
TARGET_LINK_LIBRARIES(Fuga
DEBUG hoge_d
OPTIMIZE hoge
)変数 ソース
cmake -G CMAKE_SOURCE_DIR
CMAKE_SOURCE_DIRビルドディレクトリ cmake -G CMAKE_SOURCE_DIR を実行したディレクトリ
CMAKE_BINARY_DIRThe path to the top level of the build tree
出力ディレクトリ exe と dll の出力先。
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)example CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(hello) # hello.sln
ADD_EXECUTABLE(hello main.cpp) # hello.vcxproj
set(CMAKE_CXX_FLAGS "/WD4096")
set(CMAKE_C_FLAGS "/WD4096")
include_directories(libpath/include)
add_definitions(
-DUNICODE
-D_UNICODE
)2017
0528
cmakeで実行ファイルを作成する例
2017
0528