我使用的是Windows 10 64位版本1703。最近,我想从头开始构建Tesseract-OCR库以用于学习。在此过程中,我必须构建其他几个库,将它们放入单个文件夹中,并将其命名为“myLibrary”(C:/ myLibrary),然后在Windows路径变量中进行设置。即使其他库构建成功,即使在路径“C:/ myLibrary”的情况下,CMake仍然很难找到库。每次添加新库时是否都要修改特定项目的CMakeLists.txt文件才能查看该库?还是可以假设CMake具有在路径中查找库的功能?只需在路径中设置'C:/ myLibrary'就足够了,还是我应该添加每个已编译库的'bin'和'lib'文件夹以便CMake可以找到它们?

最佳答案

Windows PATH不能帮助您检测CMake中的库。如果这一切都行得通,那不是设计使然,并且很容易出错。在CMake中,最好的方法是通过LIST手动添加库。例如

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路径,而是需要在set之前用target_link_libraries指定位置。
set(LIB_PATH "C:/myLibrary")

关于c++ - 如何正确设置Windows路径,以便CMake轻松识别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43679261/

10-16 15:52