Clion 在使用cmake编译 apue.h遇到的问题
2017-01-12 18:18
1076 查看
最近在Clion该IDE上测试一下apue上的例子,但是发现链接找不到函数的问题,这是由于cmake在编译c代码和c++代码产生的函数名不一致问题。
主要是 cmake对 apue.h 采用c编译,main.cpp是g++编译造成的。
解决方法:
1、在cmakelist中设置#set(CMAKE_C_COMPILER g++) 将C编译器强制转为g++(不推荐)
2、#set_source_files_properties(${SOURCE_FILES} PROPERTIES LANGUAGE CXX ) 将文件按照CXX 对待 或者直接修改函数的源文件后缀为.cpp。
例如 使用到apue.h 中 error_quit 函数,函数源文件为 error.c ,这里可将 error.c 修改为error.cpp (文件较多会比较麻烦)
3、直接添加 extern “C”{} 到头文件中
#ifndef _APUE_H
#define _APUE_H
#ifdef __cplusplus
extern “C” {
#endif
….(函数声明)
#ifdef __cplusplus
}
#endif
#endif
(推荐)
主要是 cmake对 apue.h 采用c编译,main.cpp是g++编译造成的。
解决方法:
1、在cmakelist中设置#set(CMAKE_C_COMPILER g++) 将C编译器强制转为g++(不推荐)
2、#set_source_files_properties(${SOURCE_FILES} PROPERTIES LANGUAGE CXX ) 将文件按照CXX 对待 或者直接修改函数的源文件后缀为.cpp。
例如 使用到apue.h 中 error_quit 函数,函数源文件为 error.c ,这里可将 error.c 修改为error.cpp (文件较多会比较麻烦)
3、直接添加 extern “C”{} 到头文件中
#ifndef _APUE_H
#define _APUE_H
#ifdef __cplusplus
extern “C” {
#endif
….(函数声明)
#ifdef __cplusplus
}
#endif
#endif
(推荐)
相关文章推荐
- ubuntu 使用cmake 编译 C++ 及 遇到到问题
- Qt5.7以及5.8在cmake工程中使用C++14编译遇到的问题及解决方案
- 使用CMake + MinGW + Eclipse 开发OpenCV --编译,使用以及可能遇到的问题详解
- 使用ICE遇到的编译问题
- QGIS1.7.1版本编译 cmake配置时遇到的问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 亲笔,spark编译、安装、部署、使用的经历中所遇到的问题
- cmake编译时遇到的问题解决
- 使用ubuntu x86_64位元编译Android代码遇到的library问题(solved)
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- VS2010下使用STLport编译boost时遇到的一些问题
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- 使用CMake生成sln项目和VS工程遇到的问题
- g++使用第三方库编译时遇到的一个小问题
- VS2008使用ATLTRACE遇到编译问题:无法解析的外部符号 "class ATL::CTraceCategory
- 使用CyanogenMod编译SDK遇到的问题总结
- VS2008中使用libcurl库在编译时遇到的LNK2001问题
- 使用javac编译java文件和使用javah生成C/C++头文件 遇到找不到类的问题
- 使用CMAKE编译单元测试代码发现如下问题
- Cmake编译OpenCV和如何在VS工程中配置来使用编译后的OpenCV进行跟踪调试问题