http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf
simple example: source全部在当前目录
project(hello)
aux_source_directory(. SRC_FILE)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_executable(hello ${SRC_FILE})
t2: 一个项目,两个文件夹,生成两个exe
root: folder1: src folder2:lib
root CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(hello)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_subdirectory(src bin)
add_subdirectory(lib hellobin)
install( FILES README DESTINATION share/doc/cmake/t2)
install( PROGRAMS runhello.sh DESTINATION bin)
install(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
src/CMakeLists.txt
set(TARGET_NAME hello)
set(SRC_FILE hello.cpp)
add_executable(${TARGET_NAME} ${SRC_FILE})
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
lib/ CMakeLists.txt
set(TARGET_NAME hello1)
set(SRC_FILE hello.cpp)
add_executable(${TARGET_NAME} ${SRC_FILE})
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
t3----------------- 一个项目,两个文件夹, 一个是lib,另外一个依赖这个lib生成exe
root /CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(hello)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_subdirectory(src bin)
add_subdirectory(lib lib)
install( FILES README DESTINATION share/doc/cmake/t2)
install( PROGRAMS runhello.sh DESTINATION bin)
install(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
lib/CMakeLists.txt -----------------
aux_source_directory(. SRC_FILE)
#set(SRC_FILE hello.cpp)
set(TARGET_NAME hellolib)
add_library(${TARGET_NAME} SHARED ${SRC_FILE})
set(STATIC_NAME hello_static)
add_library( ${STATIC_NAME} STATIC ${SRC_FILE})
set_target_properties(${STATIC_NAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME})
install( TARGETS ${TARGET_NAME} ${STATIC_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
src/CMakeLists.txt --------
set(TARGET_NAME hello)
aux_source_directory(. SRC_FILE)
add_executable(${TARGET_NAME} ${SRC_FILE})
include_directories(${PROJECT_SOURCE_DIR}/lib)
link_directories(${PROJECT_BINARY_DIR}/lib)
target_link_libraries(hello hellolib)
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
simple example: source全部在当前目录
project(hello)
aux_source_directory(. SRC_FILE)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_executable(hello ${SRC_FILE})
t2: 一个项目,两个文件夹,生成两个exe
root: folder1: src folder2:lib
root CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(hello)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_subdirectory(src bin)
add_subdirectory(lib hellobin)
install( FILES README DESTINATION share/doc/cmake/t2)
install( PROGRAMS runhello.sh DESTINATION bin)
install(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
src/CMakeLists.txt
set(TARGET_NAME hello)
set(SRC_FILE hello.cpp)
add_executable(${TARGET_NAME} ${SRC_FILE})
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
lib/ CMakeLists.txt
set(TARGET_NAME hello1)
set(SRC_FILE hello.cpp)
add_executable(${TARGET_NAME} ${SRC_FILE})
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
t3----------------- 一个项目,两个文件夹, 一个是lib,另外一个依赖这个lib生成exe
root /CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(hello)
message(STATUS "This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "This is SOURCE dir" ${PROJECT_SOURCE_DIR})
add_subdirectory(src bin)
add_subdirectory(lib lib)
install( FILES README DESTINATION share/doc/cmake/t2)
install( PROGRAMS runhello.sh DESTINATION bin)
install(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
lib/CMakeLists.txt -----------------
aux_source_directory(. SRC_FILE)
#set(SRC_FILE hello.cpp)
set(TARGET_NAME hellolib)
add_library(${TARGET_NAME} SHARED ${SRC_FILE})
set(STATIC_NAME hello_static)
add_library( ${STATIC_NAME} STATIC ${SRC_FILE})
set_target_properties(${STATIC_NAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME})
install( TARGETS ${TARGET_NAME} ${STATIC_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
src/CMakeLists.txt --------
set(TARGET_NAME hello)
aux_source_directory(. SRC_FILE)
add_executable(${TARGET_NAME} ${SRC_FILE})
include_directories(${PROJECT_SOURCE_DIR}/lib)
link_directories(${PROJECT_BINARY_DIR}/lib)
target_link_libraries(hello hellolib)
install( TARGETS ${TARGET_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)