我正在使用 cmake 生成一个 Visual Studio 项目。
假设我需要使用以下 Microsoft 特定的库和 header :
c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\VS\UnitTest\lib\x64\Microsoft.VisualStudio.TestTools.CppUnitTestFramework.lib
)c:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\crtdbg.h
)我不想将这些路径硬编码到我的 CMakeLists.txt 中,也不想强制开发人员在构建过程中传入路径。
我希望能够做这样的事情:
# 1. get include paths somehow
# 2. get lib paths somehow
include_directories(
${MSVS_UnitTest_INCLUDE_DIR}
${Windows_SDK_INCLUDE_DIR}/ucrt
)
link_directories(
${MSVS_UnitTest_LIBRARIES_DIR}/x64
${Windows_SDK_LIBRARIES_DIR}/ucrt/x64
)
add_library(MyTest mytest.cpp)
target_link_libraries(MyTest
libucrt
Microsoft.VisualStudio.TestTools.CppUnitTestFramework
)
做#1 和#2 的正确方法是什么?
最佳答案
至少对于 #1(包括 sdk 的路径),我找到了一个解决方案。
如果您使用 Generator for Visual Studio , cmake 变量 CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION填充了包含文件夹的路径。
另一种方法是使用环境变量 $ENV{WindowsSdkDir} 和 $ENV{WindowsSDKVersion},很可能源 cmake 也从中获取此信息。
关于c++ - cmake:查找/添加 Visual Studio 或 windows sdk 库和头文件的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862199/