成功构建后缺少二进制文件?

问题描述 投票:0回答:1

我有一个 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 文件位于不同的位置,但两者都产生了相同的结果。无论哪种方式都不会输出任何库。

c++ visual-studio templates cmake msbuild
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.