1,目录结构
2,代码清单
2.1,utils.h
#ifndef __UTILS_H__
#define __UTILS_H__
#include <iostream>
class Utils {
private:
public:
static void print(std::string str);
};
void print(std::string str);
#endif
2.2,utils.cpp
#include "utils.h"
void Utils::print(std::string str) {
std::cout << "utils print:" << str << std::endl;
}
void print(std::string str) {
std::cout << "print:" << str << std::endl;
}
2.3,main.cpp
#include <iostream>
#include "utils.h"
int main() {
std::string str = "hello";
Utils::print(str);
print(str);
std::cout << "hellow world!" << std::endl;
return 0;
}
2.4,顶层CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
if(CMAKE_COMPILER_IS_GNUCC)
message("COMPILER IS GNUCC")
ADD_DEFINITIONS ( -std=c++11 )
endif(CMAKE_COMPILER_IS_GNUCC)
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -ggdb3")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/module)
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/process)
2.5,so包(module)CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(module)
if(CMAKE_COMPILER_IS_GNUCC)
message("COMPILER IS GNUCC")
ADD_DEFINITIONS ( -std=c++11 )
endif(CMAKE_COMPILER_IS_GNUCC)
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -ggdb3")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/utils)
FILE(GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
message(${CMAKE_CURRENT_SOURCE_DIR})
message(${SOURCE_FILES})
SET(ALL_SRCS ${SOURCE_FILES})
message(${ALL_SRCS})
ADD_LIBRARY(${PROJECT_NAME} SHARED ${ALL_SRCS})
2.6,工程(process)CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(hello)
if(CMAKE_COMPILER_IS_GNUCC)
message("COMPILER IS GNUCC")
ADD_DEFINITIONS ( -std=c++11 )
endif(CMAKE_COMPILER_IS_GNUCC)
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/module/include/utils)
FILE(GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
message(${CMAKE_CURRENT_SOURCE_DIR})
message(${SOURCE_FILES})
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/module)
LINK_LIBRARIES(module)
SET(ALL_SRCS ${SOURCE_FILES})
message(${ALL_SRCS})
ADD_EXECUTABLE(${PROJECT_NAME} ${ALL_SRCS})
3,编译运行