编写C++;使用带有cmake的v8库编程 我一直在使用V8C++库进行一个项目,我用一个MaFIX文件编译它,但是在我使用CYONE和我想要调试的程度上,我必须使用一个 cMaKelist.txt < /Cord>文件。
我的问题是Makefile正在工作,但cmake 以下是生成文件:编写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_
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