ubuntu 가 짱나는게 개발툴들이 버전업이 느리다는거.
둘다 기분좋은 일은 아니다.
음.. 위 매크로가 추가되면서 내가 자주 써먹는 misc.cmake 는 모양이 이렇게 됐네. 보통 최상위 CMakeLists.txt 에서 이걸 인클루드 하도록 하고 쓰는게 내 현재 개발취향
# gtags
find_program(gtags NAMES gtags)
if(gtags)
add_custom_target(tags ALL ${gtags} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMENT "TAGGING")
endif(gtags)
# 자주 쓰일것 같아서 매크로로 만들어둔다.
macro(use_project xs)
foreach(x ${xs})
include_directories(${${x}_SOURCE_DIR})
link_directories(${${x}_BINARY_DIR})
endforeach(x ${xs})
endmacro(use_project xs)
# 멀티쓰레드사용
macro(use_threads)
include(FindThreads)
link_libraries(${CMAKE_THREAD_LIBS_INIT})
endmacro(use_threads)
# sloccount
find_program(sloccount NAMES sloccount)
if(sloccount)
add_custom_target(sloc ${sloccount} ${CMAKE_SOURCE_DIR})
endif(sloccount)
# 테스트
macro(use_test)
include(CTest)
enable_testing()
endmacro(use_test)
# msvc 워닝 제거
macro(suppress_msvc_warnings ns)
if(MSVC)
foreach(n ${ns})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd${n}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd${n}")
endforeach(n ${ns})
endif(MSVC)
endmacro(suppress_msvc_warnings ns)
# 간단히 만들어본 boost 사용
# 최상위 CMakeLists.txt 에서
#
# use_boost(1.38 system date_time filesystem)
#
# 식으로 버전적은후 필요한 컴퍼넌트들을 줄줄이 적으면 된다.
# foo 라는 바이너리에 부스트 라이브러리들을 링크할때는
#
# target_link_libraries(foo ${Boost_LIBRARIES})
#
# 요리 적으면 된다. 정말 편히 쓰려면 아예 link_libraries 를 박아도
# 되고.
macro(use_boost ver)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREAD ON)
# 아오 짱나. cmake 문법은 정말 드럽군. &rest 같은놈이 없어서 ARGV 를
# 복사하고 앞대가리를 뽑아냈다. 달랑 이거 몇줄 때문에 시간 꽤나 날아갔네.
set(components ${ARGV})
list(REMOVE_AT components 0)
find_package(Boost ${ver} EXACT COMPONENTS ${components})
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
endif()
endmacro(use_boost)
아..
환경변수에서 BOOST_ROOT 잡는거 잊지 말자.
PS.
오랜만에 C++ 에 boost 까지 써먹으니 빌드속도 쩌는구먼.