libhello文件目录下:
helloworld.h
#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__
void hello(const char* str);
#endif
helloworld.c
#include <stdio.h>
#include "helloworld.h"
void hello(const char *str)
{
printf("hello %s\n",str);
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
set(SRC_LIST helloworld.c)
add_library(libhello STATIC ${SRC_LIST})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set_target_properties(libhello PROPERTIES OUTPUT_NAME "hello") // 避免生成liblibhello.so的库
src文件目录下:
main.c
#include "helloworld.h"
int main()
{
hello("lele");
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
include_directories(${PROJECT_SOURCE_DIR}/libhello) // 连接头文件
set(SRC main.c)
set(EXECUTABLE_OUTPUT_DIR ${PROJECT_BINARY_DIR}/bin)
add_executable(main ${SRC})
target_link_libraries(main libhello)
最外层的CMakeLists.txt
project(HELLO)
add_subdirectory(src)
add_subdirectory(libhello)
新建一个编译文件夹 build
cd build
cmake ..
make
./bin/main