编译

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编译步骤中遗漏的错误,确保服务的编译正常

                                    

posted @ 2021-04-21 21:36  dsfsadfdgd  阅读(138)  评论(0)    收藏  举报