C/C++ 条件编译静态库或动态库
==》windows 下方法:
1.方法一:VS工程中中直接添加
1.1在VS的属性-》常规-》附加库目录,添上文件夹的路径:例如:lib/x64;
1.2输入的附加依赖项,添加上库的名字,例如:dmapi.lib
1.3 对用到该库的代码进行,宏包含,例如:
#ifdef LOG_XY
...
#endif
1.4 当你在工程编译时,在c/c++-》预处理器-》预处理器定义,中未定义LOG_XY 时,就不会依赖库dmapi.lib
2.方法二:在代码中添加
#ifdef _WIN32
#ifdef LOG_XY
#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")
#else
//#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")
#endif
#endif
即可。
==》LINUX 下,比较简单:
在makefile 中库和头文件中,用宏区分即可,例如:
LOG_XY_FLAG=0
...
ifeg($LOG_XY_FLAG), 1)
LOGXYLIB=-L/opt/test/ -ldmapi
else
LOGXYLIB=
endif
...
然后编译加上上面的LOGXYLIB就可以了。
注:在添加新功能含有新的依赖库时,为防止在仅需要旧的功能时,依然要依赖了新的依赖库,就会用到以上方法。