小编ved*_*gom的帖子

使用gnuplot的传染媒介领域

如何绘制矢量场,其中每个点(x,y)的方向由tangent(alpha) = f(x, y)?给出?

gnuplot

13
推荐指数
2
解决办法
3万
查看次数

在CMake中链接C和CXX文件

我正在用CMake构建C++应用程序.但它在C中使用了一些源文件.这是简化的结构:

主干/的CMakeLists.txt:

project(myapp)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -Wall")
add_subdirectory (src myapp)
Run Code Online (Sandbox Code Playgroud)

主干/ src目录/ main.cpp中:

#include "smth/f.h"
int main() { f(); }
Run Code Online (Sandbox Code Playgroud)

主干/ src目录/的CMakeLists.txt:

add_subdirectory (smth)
link_directories (smth)    
set(APP_SRC main)
add_executable (myapp ${APP_SRC})
target_link_libraries (myapp smth)
Run Code Online (Sandbox Code Playgroud)

主干/ src目录/水木清华/ FH:

#ifndef F_H
#define F_H
void f();
#endif
Run Code Online (Sandbox Code Playgroud)

主干/ src目录/水木清华/ FC:

#include "f.h"
void f() {}
Run Code Online (Sandbox Code Playgroud)

躯干/ SRC /不便/的CMakeLists.txt

set (SMTH_SRC some_cpp_file1 some_cpp_file2 f)
add_library (smth STATIC ${SMTH_SRC})
Run Code Online (Sandbox Code Playgroud)

问题是:我运行gmake,它编译所有文件,当它将所有库连接在一起时,我得到:

undefined reference to `f()` in main.cpp
Run Code Online (Sandbox Code Playgroud)

如果我将fc重命名为f.cpp,一切都会好起来的.有什么区别以及如何处理它?

谢谢

c c++ linker cmake

9
推荐指数
1
解决办法
9695
查看次数

标签 统计

c ×1

c++ ×1

cmake ×1

gnuplot ×1

linker ×1