编写C++;使用带有cmake的v8库编程 我一直在使用V8C++库进行一个项目,我用一个MaFIX文件编译它,但是在我使用CYONE和我想要调试的程度上,我必须使用一个 cMaKelist.txt < /Cord>文件。

编写C++;使用带有cmake的v8库编程 我一直在使用V8C++库进行一个项目,我用一个MaFIX文件编译它,但是在我使用CYONE和我想要调试的程度上,我必须使用一个 cMaKelist.txt < /Cord>文件。,c++,makefile,cmake,v8,C++,Makefile,Cmake,V8,我的问题是Makefile正在工作,但cmake 以下是生成文件: NAME = project SRC = src/main.cpp OBJ = $(SRC:.cpp=.o) CXXFLAGS = -Iv8/include -std=c++11 LIBV8 = -Lv8/out/native/obj.target/third_party/icu/. -Lv8/out/native/obj.target/src/. -Wl,--start-group -lv8_base -lv8_

我的问题是Makefile正在工作,但cmake

以下是生成文件:

NAME    = project

SRC = src/main.cpp

OBJ = $(SRC:.cpp=.o)

CXXFLAGS = -Iv8/include -std=c++11

LIBV8 = -Lv8/out/native/obj.target/third_party/icu/. -Lv8/out/native/obj.target/src/. -Wl,--start-group -lv8_base -lv8_libbase -lv8_external_snapshot -lv8_libplatform -lv8_libsampler -licuuc -licui18n -Wl,--end-group

all: $(NAME)

$(NAME): $(OBJ)
    g++  -pthread -lSDL2 $^ -o $@ $(CXXFLAGS) $(LIBV8) -lrt -ldl
这是我制作的CMake版本:

cmake_minimum_required(VERSION 2.8.4)
project(Project CXX)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

include_directories(${CMAKE_SOURCE_DIR}/v8/include)
include_directories(/usr/include/SDL2)

set(SDL2_LIBRARY /usr/lib/x86_64-linux-gnu/libSDL2.a)

find_package(Threads)

set(LIBV8
        v8_base
        v8_libbase
        v8_external_snapshot
        v8_libplatform
        v8_libsampler
        icuuc
        icui18n
        rt
        dl
        )
link_directories(
        ${CMAKE_SOURCE_DIR}/v8/out/native/obj.target/src/
        ${CMAKE_SOURCE_DIR}/v8/out/native/obj.target/third_party/icu/
        ${CMAKE_SOURCE_DIR}/v8/build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu/
)

file(GLOB_RECURSE SOURCES
        ${CMAKE_SOURCE_DIR}/src/main.cpp
        )

add_executable(project ${SOURCES})
target_link_libraries(project ${CMAKE_THREAD_LIBS_INIT} ${SDL2_LIBRARY} ${LIBV8})
我想我已经正确地链接了所有必要的库,但是当我使用CMake版本编译时,我有很多这样的错误(它们对于我的终端来说太多了,所以我只需要放一个片段,“référence indéfinie vers”意味着“未定义的引用”):

非常感谢您的关注,我很感激

编辑:
make VERBOSE=1
用于链接:

[ 50%] Linking CXX executable project
/opt/cmake-3.7.1-Linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/project.dir/link.txt --verbose=1
/usr/bin/c++    -std=c++11   CMakeFiles/project.dir/src/main.cpp.o  -o project  -L/home/xobtah/Project/v8/out/native/obj.target/src  -L/home/xobtah/Project/v8/out/native/obj.target/third_party/icu  -L/home/xobtah/Project/v8/build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath,/home/xobtah/Project/v8/out/native/obj.target/src:/home/xobtah/Project/v8/out/native/obj.target/third_party/icu:/home/xobtah/Project/v8/build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -rdynamic -lpthread -Wl,-Bstatic -lSDL2 -Wl,-Bdynamic -lv8_base -lv8_libbase -lv8_external_snapshot -lv8_libplatform -lv8_libsampler -licuuc -licui18n -lrt -ldl
您可能需要
-Wl、-start group
-Wl、-end group
围绕
目标链接库()中的实际v8库

如果您的目标是复制Makefile,则Makefile“LIBV8”中的库与CMake“LIBV8”中的库不同。

您可能需要
-Wl、-start group
-Wl、-end group
围绕
目标链接库()中的实际v8库


如果您的目标是复制Makefile,则Makefile“LIBV8”中的库与CMake“LIBV8”中的库不同。

您可以尝试
make VERBOSE=1
查看确切的链接器命令行。感谢您的回答,我编辑了我的帖子以添加链接器行您可以尝试
make VERBOSE=1
查看确切的链接器命令行。谢谢您的回答,我编辑了我的帖子以添加链接器行非常感谢您,在这组库之前和之后添加了-Wl、-start-group和-Wl、-end-group我还遇到了SDL2库的问题,但我解决了这个问题:非常感谢,在这组库之前和之后添加-Wl、-start group和-Wl、-end group。我也遇到了SDL2库的问题,但我解决了这个问题:
[ 50%] Linking CXX executable project
/opt/cmake-3.7.1-Linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/project.dir/link.txt --verbose=1
/usr/bin/c++    -std=c++11   CMakeFiles/project.dir/src/main.cpp.o  -o project  -L/home/xobtah/Project/v8/out/native/obj.target/src  -L/home/xobtah/Project/v8/out/native/obj.target/third_party/icu  -L/home/xobtah/Project/v8/build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath,/home/xobtah/Project/v8/out/native/obj.target/src:/home/xobtah/Project/v8/out/native/obj.target/third_party/icu:/home/xobtah/Project/v8/build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu -rdynamic -lpthread -Wl,-Bstatic -lSDL2 -Wl,-Bdynamic -lv8_base -lv8_libbase -lv8_external_snapshot -lv8_libplatform -lv8_libsampler -licuuc -licui18n -lrt -ldl