C++ 如何正确设置Windows路径以便于CMake识别?
我使用的是Windows 10 64位verson 1703。最近,为了学习,我想从头开始构建Tesseract OCR库。在此过程中,我不得不构建其他几个库,将它们放在一个文件夹中,并将其命名为“myLibrary”(C:/myLibrary),然后在Windows path变量中进行设置。尽管其他库构建成功,但即使“C:/myLibrary”在路径中,我仍然很难找到这些库。是否每次添加新库时,都必须修改特定项目的CMakeLists.txt文件才能查看库?或者可以假设CMake具有查找库的功能,只要库在路径中就可以了?仅在路径中设置“C:/myLibrary”就足够了吗?还是应该添加每个编译库的“bin”和“lib”文件夹,以便CMake找到它们?Windows路径不会帮助您检测CMake中的库。如果这真的行得通的话,它不是设计出来的,可能很容易出错。在CMake中,通过C++ 如何正确设置Windows路径以便于CMake识别?,c++,c,windows,cmake,C++,C,Windows,Cmake,我使用的是Windows 10 64位verson 1703。最近,为了学习,我想从头开始构建Tesseract OCR库。在此过程中,我不得不构建其他几个库,将它们放在一个文件夹中,并将其命名为“myLibrary”(C:/myLibrary),然后在Windows path变量中进行设置。尽管其他库构建成功,但即使“C:/myLibrary”在路径中,我仍然很难找到这些库。是否每次添加新库时,都必须修改特定项目的CMakeLists.txt文件才能查看库?或者可以假设CMake具有查找库的功
LIST
手动添加库的最佳方法。e、 g
target_link_libraries(${TARGET} PRIVATE
"${LIB_PATH}/foo.lib"
"${LIB_PATH}/baz.lib"
"${ANOTHER_LIB_PATH}/buzz.lib"
...
}
您也可以对路径中的库执行GLOB
,但不鼓励这样做,因为您需要手动重新运行CMake以获取任何新库GLOB
无法单独检测新库,但假设您不介意:
file(GLOB LIBS "${LIB_PATH}/lib*.dll")
target_link_libraries(${TARGET} PRIVATE ${LIBS})
另一个需要记住的重要事项是,您不应该依赖于CMake的系统指定路径,您需要在target\u link\u库之前使用set
指定位置,例如
set(LIB_PATH "C:/myLibrary")
我认为它没有挖掘“bin”和“lib”文件夹的智能,因为不是每个项目都使用相同的约定。您需要显式地添加这些。在我看来,如果在代码库中使用PATH
变量,则是错误的。仅供参考PATH
环境变量用于查找不包含和libs的可执行文件(exe、bat等)。