修改 .cpp 文件的内容

Posted

技术标签:

【中文标题】修改 .cpp 文件的内容【英文标题】:Modifying the contents of a .cpp file 【发布时间】:2016-04-05 15:13:44 【问题描述】:

更新:我现在可以使用 make 编译 .cpp 文件 (我可以看到编译输出)。但是,这些更改似乎没有生效。 运行make后,我重新启动计算机,但仍然没有任何变化。

您可能明白,我对 c++ 的经验非常有限。 我目前正在开发一个项目(OpenBTS),并在项目构建和安装后发现其中一个 .cpp 文件存在错误。 我的问题是,如何(f.eks 更改 JSON 数据引用的字符串)并构建它,以便之后可以看到更改?

我目前尝试了以下方法:

1.
make 'filename.cpp'
make: Nothing to be done for 'filename.cpp'

2.
make 'filename'
g++ 'filename.cpp' -o 'filename'
In file included from 'filename.cpp:29:0:
'filname.h':26:21: fatal error: Timeval.h: No such file or directory
#include <Timeval.h>
compilation terminated.

3. Run make from root directory:
Nothing to be done for 'all.'

4. Run make clean and make from root. This rebuilds the project but the
changes are still not in effect (I can see that the JSON String is not
changed at the webserver).

5. Run ./build.sh script. Still no changes. 

关于2.方法,既然项目已经编译成功,为什么我用单个文件尝试,编译器找不到头文件?我唯一改变的是从“ARFCN”到“ARFCNtest”的字符串。 由于大约有 50 个相互依赖的头文件,将包含从 更改为 "" 并将每个文件复制到同一目录中似乎是一种浪费和不必要的操作?

【问题讨论】:

我没有使用 OpenBTS 的经验,但是“make clean”后跟“make”几乎肯定应该这样做,但是,您是否在 安装(或以其他方式部署)修改后的您刚刚构建的软件包?您是否停止了原始进程并重新启动等? 我试图修改的 .cpp 文件正在将 JSON 数据发送到网络服务器,所以我在“make clean”和“make”之后尝试的唯一想法是重新启动计算机。但我仍然看不到 JSON 数据的任何变化,这一定意味着 .cpp 文件尚未编译或? 听起来不太可能;您通常不会“就地”构建一些东西(也许对于某些动态语言框架,但通常不适用于 C/C++ 项目)。我强烈怀疑您需要在重新启动之前将构建的二进制文件复制到正确的位置。在命令行上尝试ps -Af 以查看实际运行的内容并找到应用程序的 pid,然后检查其 /proc 条目 (/proc/xxx/self) 以找到二进制文件的链接。 谢谢@davmac,我一定会试试的! (应该是/proc/xxx/exe,而不是/proc/xxx/self,对不起!)。 【参考方案1】:

由于编译失败,更改未生效。请参阅您在问题中引用的错误消息。修复它并重建。

顺便说一下,重新启动计算机应该不是必需的。如果Makefile 正确表达了依赖关系,那么即使make clean 也不应该是必需的。 (在这种情况下似乎是这样做的,因为它尝试重新编译您修改的源文件。)

【讨论】:

以上是关于修改 .cpp 文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

log4cpp 日志库

c_cpp 列出文件修改时间

声明和修改结构的静态数组 -CPP

vs2010中修改*.ui文件、替换图片后,不重新生成qrc_*.cpp

yaml-cpp 甚至为 const 节点修改底层容器?

git --- 修改和提交文件