我正在用CMake构建C++应用程序。但它使用了一些源文件中C.这里是简化的结构:在CMake中链接C和CXX文件
躯干/的CMakeLists.txt:
project(myapp)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -Wall")
add_subdirectory (src myapp)
躯干/ SRC/main.cpp中:
#include "smth/f.h"
int main() { f(); }
躯干/ SRC /的CMakeLists.txt:
add_subdirectory (smth)
link_directories (smth)
set(APP_SRC main)
add_executable (myapp ${APP_SRC})
target_link_libraries (myapp smth)
主干/ src目录/水木清华/ FH:
#ifndef F_H
#define F_H
void f();
#endif
主干/ src目录/水木清华/ FC:
#include "f.h"
void f() {}
主干/ src目录/水木清华/的CMakeLists.txt
set (SMTH_SRC some_cpp_file1 some_cpp_file2 f)
add_library (smth STATIC ${SMTH_SRC})
的问题是:我运行gmake命令,它编译所有的文件和当它链接所有库在一起,我得到:
undefined reference to `f()` in main.cpp
如果我重命名fc到f.cpp一切都很好。有什么区别以及如何处理它?
感谢
关于此问题的详细介绍:'混合使用C和C++:'http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html – Lazer 2010-03-08 12:36:52