Open clip-byte opened 5 months ago
可以按照作者博客的方法首先安装 googletest
$ git clone https://github.com/google/googletest.git # version 1.10.0
$ cd googletest/
$ mkdir build/
$ cd build/
$ cmake ..
$ make
$ make install
然后按照README.md中的方法执行编译即可。 文章链接:https://lesliezhu.com/blog/2022/11/10/writing_an_interpreter_in_cpp_1/#gtest
另外如果你想从源码进行编译,可以这样修改:
这里有2个点需要注意:
在 clone 仓库的时候注意要获取子模块--recursive
标志。所以clone 代码是:
git clone --recursive https://github.com/LeslieZhu/monkey-cpp.git
作者使用的是 find_package 方法找到 googletest。我们做以下修改从源码进行编译。举例来说:src/01 这个文件夹的 CMakeList.txt 文件做以下修改。
cmake_minimum_required(VERSION 3.14)
project(waiicpp)
IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Release") ENDIF(NOT CMAKE_BUILD_TYPE)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "-Wall -Wextra") set(CMAKE_CXX_FLAGS_DEBUG "-g") set(CMAKE_CXX_FLAGS_RELEASE "-O3")
MESSAGE(" Build type is ${CMAKE_BUILD_TYPE} [use -DCMAKE_BUILD_TYPE=Release or -DCMAKE_BUILD_TYPE=Debug on the cmake command to configure the build type]")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
include_directories(${PROJECT_SOURCE_DIR})
add_subdirectory(../../third_party/googletest googletest)
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
add_executable(monkey main/monkey.cpp )
target_link_libraries(monkey )
add_executable(monkey_test test/main.cpp test/lexer_test.cpp )
target_link_libraries(monkey_test gtest gtest_main )
修改后按README.md的方法进行编译:
$ cd src/01/ $ mkdir build/ $ cd build/ $ cmake .. $ make
我以上测试环境是在 wsl2 Ubuntu 22.04 上进行测试的。wsl2安装和开发环境搭建可以参考:
https://zhuanlan.zhihu.com/p/456132493
你好,非常感谢你的工作。最近我也在学习这本自制编译器的书籍,也想用cpp重写,于是搜索到了你的仓库,但是在环境配置那里有点问题,请问Requires下的GoogleTest和[gflags具体要怎么操作配置呢? 请问能麻烦你详细写一下配置环境这个部分吗或者录制一个视频?或者在你的博客里面专门创作一份文章? 希望我的要求不会太过分,祝工作顺利。