gpt4 book ai didi

c++ - 我的 CMakeLists.txt 文件有什么问题?

转载 作者:行者123 更新时间:2023-11-28 08:07:47 29 4
gpt4 key购买 nike

我正在尝试通过 CMake 编译一个非常小的程序,但是当我编译它然后尝试构建它时,它给了我一个错误:

fatal error LNK1181: cannot open input file '.\cm_project.dir\SharedCRT-Release\dummy.obj'

dummy.cpp 是我项目中的一个源文件。 CMakeLists.txt 文件如下所示:

project( cm_project )

set(SOURCES
src/dummy.cpp
include/version.h
)

add_library( cm_project STATIC ${SOURCES} )

set(LIBRARY_OUTPUT_PATH
$(PlatformName)
)

我错过了什么吗?提前致谢。

最佳答案

这只是一个猜测,但可能是 dummy.cpp 由于错误而没有编译,并且因为它没有编译,所以没有 dummy.obj 供链接器链接,因此链接器错误你看。奇怪的是没有编译器错误(或没有报告)。

我试图在我的系统上重现它,不幸的是在这种情况下不是 Windows,而是我针对 Unix makefiles (cmake -G "Unix Makefiles") 的 Mac。我最初将 dummy.cpp 和 version.h(#included by dummy.cpp)保存在与 CMakeLists.txt 相同的目录中,并且它没有错误。当我将 dummy.cpp 移动到 src 子目录,并将 version.h 移动到 include 子目录时,编译中断,因为编译器不知道在哪里可以找到 version.h。我需要添加这样一行来告诉它它在哪里:

include_directories(./include)

顺便说一句,我最初在我的 CMakeLists.txt 文件中有一行像 set(LIBRARY_OUTPUT_PATH $(PlatformName)) (PlatformName 周围有括号),但我最终得到了一个名为 $(PlatformName ) 在调用 CMake 之后。我将其更改为在 PlatformName (set(LIBRARY_OUTPUT_PATH ${PlatformName})) 周围加上大括号,并且未创建该虚假目录。也许这与您的问题有关。

关于c++ - 我的 CMakeLists.txt 文件有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9896111/

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