我正在尝试使用CMake构建一个库(后者又链接到通过CMake构建的其他库)。我对这个过程有几个问题,并希望得到一些指导。
对于库,我有一个基本上有
的CMakeLists.txtset(SRC srcfile1.cpp srcfile2.cpp)
set(HEADERS srcfile1.h srcfile2.h)
add_library(myLib ${SRC} ${HEADERS})
INSTALL(FILES ${HEADERS} DESTINATION “include/myLib”)
对于“Unix Makefile”生成器,使用cmake命令
cmake -DCMAKE_INSTALL_PREFIX=. -DCMAKE_BUILD_TYPE=debug -G “Unix Makefiles” ..
我在build / src中获得了一个合适的调试库libMyLib.a。对于发布版本类型,libMyLib.a的发布版本放在build / src
中但是,对于Xcode生成器,库放在src / Debug中。我在这里面临的问题是
一个。在Xcode中进行存档似乎没有任何效果。我没有看到在任何地方创建相应的版本库
湾我还有一个myLibTests目标(使用googles gtest),它在CMakeLists.txt中定义为
set(SRC myTest.cpp)
add_executable(myLibTests ${SRC})
add_dependencies(myLibTests myLib gtest)
set(gTestLib External/src/gTestLib)
target_link_libraries(myLibTests myLib gTestLib)
当cmake生成器是“Unix Makefiles”myLibTests构建时,链接并运行正常。 gTestLib放在External / src / gtest-build /中。但是,当它是“Xcode”时,它找不到gTest库。因为,根据具体情况,库被置于External / src / gTestLib / Debug(或Release)中(并且CMakeLists.txt中设置的上述路径不再有效)。我不确定如何在上面的set语句中适当地设置它的路径。
因为,在Xcode中控制调试/发布(并且CMake中的配置过程没有意识到这一点),我假设没有办法分离gTestLib的发布/调试版本,并且还有CMake将Xcode配置为在构建myLib时选择适当的版本,即如果我执行myLib的调试版本,它还会执行gTest的调试版本并链接到它(类似于发布版本)?或者,是否可以配置Xcode以将Debug和Release版本放在同一位置(然后硬编码上面的路径)?配置这个的最佳方法是什么?
由于