编译
1.添加头文件搜索目录:
include_directories("/home/work/test/")
2.添加库文件搜索目录
link_directories("/home/work/test/output/lib")
3.链接库文件
target_link_libraries(${PROJECT_NAME} ssl crypto rt dl z uuid sum)
4.依赖库之间相互依赖:liba.a依赖libb.a,liab.a又依赖liba.a,解决 -Xlinker:用这个参数可以解决静态库之间相互依赖的问题。相较于前面一种,如果多个静态库出现依赖问题的话,就不用自己去管这个依赖关系是怎么样的了,非常的方便。
$(CC) -o $@ -Xlinker "-(" $^ -Xlinker "-)" $(LDLAGS)
5.C++文件用g++编译,c文件用gcc编译。
https://gitee.com/lvvgitee/external-usage
1.gcc编译c文件
2.在使用c库的c++文件中,使用extern将c文件对应的.h文件中包裹。
#ifdef __cplusplus //如果这是一段cpp的代码 extern "C" { #endif void cfunc(); #ifdef __cplusplus } #endif
6.添加一个子目录并构建该子目录
add_subdirectory( googletest )
7.
CmakeList.txt:
option(TEST_DEBUG "option for debug" OFF) #cmake CmakeList.txt时默认关闭定义,开启定义需要,cmake -DTEST_DEBUG=on CMakeLists.txt if (TEST_DEBUG) add_definitions(-DTEST_DEBUG) #添加编译参数,gcc命令行添加DEBUG宏定义 endif()
源码:
int main(){ #ifdef TEST_DEBUG cout<< "test debug"<<endl; //cmake -DTEST_DEBUG=on CMakeLists.txt,会输出 test debug #endif cout<<" no "<<endl; return 0; }
8.make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,
让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源
cmake CMakeLists.txt make -j4 //比make效率高
make test
make install
make test 能检测之前进行的make编译步骤中遗漏的错误,确保服务的编译正常