gpt4 book ai didi

makefile - 无法使用Cmake构建

转载 作者:行者123 更新时间:2023-12-02 10:47:47 28 4
gpt4 key购买 nike

我是Cmake的新手,正在尝试创建CMakeLists.txt来构建我的项目。我可以使用g++编译器从命令行构建我的项目,但是对于Cmake,我感到困惑。

目录结构是这样的:

Project_folder
|--> Source
|--> main.cpp
|--> file1.cpp
|--> file2.cpp
|--> Header
|--> header1.h
|--> header2.h
|--> build (from where I run cmake .. and make)
CMakeLists.txt (this is under Project_folder)
Dependencies
|--> utils
|--> Utils.cpp
|--> include (has many folders in here)
|--> build (this path is in LD_LIBRARY_PATH as well)
|--> sharedlib1.so
|--> sharedlib2.so

现在,在Project_Folder中,我可以成功运行:
g++ ./Source/main.cpp ./Source/file1.cpp ./Source/file2.cpp ../Dependencies/utils/Utils.cpp -I ../Dependencies -I ../Dependencies/include/ -I ./Header/ -L ../Dependencies/build -std=c++11 -lsharedlib1 -lsharedlib2 -o ./build/main `pkg-config opencv --cflags --libs`

并生成可执行文件。

现在,我想配置CMakeLists.txt并尝试复制上面的编译器行正在执行的操作,但是没有成功(我可以 cmake .. ,但是我不能 使)。 CMakeLists.txt看起来像这样:
cmake_minimum_required(VERSION 2.8.9)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

project(my_project)

#For the shared library:
set ( PROJECT_LINK_LIBS sharedlib1.so sharedlib2.so)
link_directories(${PROJECT_SOURCE_DIR}/../Dependencies/build/ )

include_directories(${PROJECT_SOURCE_DIR}/../Dependencies ${PROJECT_SOURCE_DIR}/../Dependencies/include ${PROJECT_SOURCE_DIR}/Header)
file(GLOB SOURCES "Source/*.cpp" )

set(CMAKE_CXX_FLAGS_RELEASE pkg-config opencv cflags libs)

## add_executable(name_of_output.o list_of_cpp_files)
add_executable(build ${SOURCES})

生成makefile后运行 make ,我得到 undefined reference到main.cpp中的所有内容。我应该更改CMakeLists.txt中的任何明显内容吗?

最佳答案

您对g++的调用包括../Dependencies/utils/Utils.cpp文件,但是您对add_executable的调用仅使用与Source/*.cpp匹配的文件。一种快速的解决方案是将../Dependencies/Utils.cpp添加到对add_executable()的调用中

add_executable(build ${SOURCES} "${PROJECT_SOURCE_DIR}/../Dependencies/Utils.cpp")

在相关说明中:CMake不鼓励使用 file(GLOB ...)获取源文件列表,通常最好显式列出源文件

关于makefile - 无法使用Cmake构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49198721/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com