1, 生成最简单的可执行程序
当前目录下一个文件main.cpp,内容如下:
#include <iostream>
int main()
{
std::cout << "hello world" << std::endl;
return 0;
}
CMakeLists.txt文件位于当前目录下,内容如下:
project(main)
cmake_minimum_required(VERSION 2.8)
set(EXE_NAME main)
aux_source_directory(. SRCS)
add_executable(${EXE_NAME} ${SRCS})
在当前目录下新建一个目录build,进入build,执行cmake ..生成makefile文件,指定make进行编译。(这种方法称为外编译,生成的编译文件会位于build目录下,不会与工程代码混在一起)
设置可执行程序的输出路径:set_target_properties(${EXE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
2, 生成一个库,可执行程序链接这个库
当前目录下一个文件main.cpp,内容如下:
#include "test.h"
int main()
{
test_func();
return 0;
}
当前目录下有一个CMakeLists.txt文件,内容如下:
project(main)
cmake_minimum_required(VERSION 2.8)
add_definitions(-g -Wall)
add_subdirectory(src)
set(EXE_NAME main)
aux_source_directory(. SRCS)
include_directories(./src)
add_executable(${EXE_NAME} ${SRCS})
target_link_libraries(${EXE_NAME} Test)
当前目录下有一个src目录,其中有三个文件:
(1) test.h
void test_func();
(2) test.cpp
#include <stdio.h>
#include "test.h"
void test_func()
{
printf("test_func\n");
}
(3) CMakeLists.txt
set(LIB_NAME Test)
aux_source_directory(. LIB_SRCS)
add_library(${LIB_NAME} ${LIB_SRCS})
默认生成的是静态库
设置静态库的输出路径:set_target_properties(${LIB_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
3, 链接第三方库(示例)
include_directories(${THIRD_PARTY_DIR}/log4cplus-1.1.0-rc2/include)
link_directories(${THIRD_PARTY_DIR}/log4cplus-1.1.0-rc2/lib)
target_link_libraries(${TRGT_NAME}liblog4cplus.a pthread)
问题:
1,怎样将子目录中的自定义变量导出,在父层目录中使用?