构建具有使用CMake和Xcode添加的ExternalProjects的库

时间:2015-01-18 16:58:44

标签: xcode cmake

我正在尝试使用CMake构建一个库(后者又链接到通过CMake构建的其他库)。我对这个过程有几个问题,并希望得到一些指导。

对于库,我有一个基本上有

的CMakeLists.txt
set(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版本放在同一位置(然后硬编码上面的路径)?配置这个的最佳方法是什么?

由于

0 个答案:

没有答案