成功构建后二进制文件丢失?

强迫症柯比

我有一个 CMake 项目,用于生成 Visual Studio 解决方案,然后我尝试对其进行编译。由于某种原因,编译后的库文件不存在。我搜索了整个项目文件夹,但找不到任何库文件。这是我的 CMake 设置:

项目根:

cmake_minimum_required(VERSION 3.22)
project(ShadowContainers)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

include_directories(include/)

add_subdirectory(library)

...

库子目录:

add_library(libShadows shadows.tpp ../include/shadows.hpp)
set_target_properties(libShadows PROPERTIES LINKER_LANGUAGE CXX) # a tpp and an hpp aren't enough to make the system certain it's c++
target_compile_features(libShadows PRIVATE cxx_std_23)

MSbuild 输出包含以下行:

Done Building Project "C:\Users\[..]\projects\Shadow Array\library\libShadows.vcxproj" (default targets).

Done Building Project "C:\Users\[..]\projects\Shadow Array\library\libShadows.vcxproj.metaproj" (default targets).

即使libShadows是我项目中的唯一目标,它也不在我的项目目录中。

其他人有过这种经历吗?任何帮助表示赞赏。谢谢!

编辑:要编译项目,我尝试过:

我的典型流程(工作目录=项目根目录):

cmake .
msbuild ShadowContainers.sln

另一个过程(工作目录也是项目根目录):

mkdir build
cd build
cmake ..
cmake --build .

两者都产生了相同的结果,尽管 VS 和 CMake 文件位于不同的位置。无论哪种方式都不会输出任何库。

强迫症柯比

我能够找到问题所在。CMake(以及与此相关的约定)不会将 .tpp 视为代码文件(类似于他们处理头文件的方式)。因此,我试图编译一个没有合法代码文件的目标。纯模板库根本不是库,所以我不应该尝试独立编译它,而应该将 .hpp 和 .tpp 作为包含在我的项目中!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章