我需要编译一组使用c ++和c语言编写的文件。我需要使用cmakelists.txt。
我的一组文件是: main.cpp
#include "print_test.h"
int main()
{
print_test(10);
return 0;
}
print_test.c
#include <stdio.h>
void print_test(int a)
{
printf("%d", a);
}
print_test.h
void print_test(int a);
使用g ++ main.cpp print_test.c可以正常编译
但是当我使用以下CMakeLists.txt时,它会给出链接错误
project(print_test)
cmake_minimum_required (VERSION 2.6)
add_executable(main main.cpp print_test.c)
错误是
[ 66%] Building C object CMakeFiles/main.dir/print_test.c.o
[ 66%] Building CXX object CMakeFiles/main.dir/main.cpp.o
[100%] Linking CXX executable main
CMakeFiles/main.dir/main.cpp.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `print_test(int)'
collect2: error: ld returned 1 exit status
CMakeFiles/main.dir/build.make:98: recipe for target 'main' failed
make[2]: *** [main] Error 1
CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/main.dir/all' failed
make[1]: *** [CMakeFiles/main.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
我的问题是如何使用cmakelists.txt编译同时使用c和c ++的文件
答案 0 :(得分:0)
据我所知,CMakeLists.txt没有任何问题。
问题是当这种C ++实际上不存在时,您需要在C ++转换单元中调用C ++函数。您的意图大概是调用C函数。为了调用C函数,您必须适当地声明该函数:
.html