CMake 在同一项目中构建多个库
CMake building multiple libraries in the same project
我有一个特定的 CMake 项目,我想将其构建为静态库和共享对象(仅限 Linux)。 CMake文件的相关部分:
...
# Static lib
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
# Build shared object in Linux only
if(UNIX)
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
add_library("${PROJECT_NAME}_SHARED" SHARED ${SOURCES} ${HEADERS})
endif(UNIX)
link_directories(${ILI_EXTERNAL_LIB_DIRS})
target_link_libraries(${PROJECT_NAME} ${ILI_EXTERNAL_LIBS} IliLib PlantModel)
我可以弄清楚为什么没有构建共享对象,当我在 Unix 块中添加一条消息时,它会在构建过程中打印出来。此 cmake 文件的其余部分仅设置变量并声明项目名称。
关于如何调试此问题的任何提示?在 Windows 和 Linux 上,它目前只构建静态库。
解决方案是由@Tsyvarev 提出的,我犯了一个小错误。
正在构建静态库,因为它是另一个构建目标的依赖项。我没有在 SimulatorLib 项目上明确 运行 "Make"。
无论是否正在构建特定项目,CMake 消息都会出现在 CMake 日志中。
我有一个特定的 CMake 项目,我想将其构建为静态库和共享对象(仅限 Linux)。 CMake文件的相关部分:
...
# Static lib
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
# Build shared object in Linux only
if(UNIX)
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
add_library("${PROJECT_NAME}_SHARED" SHARED ${SOURCES} ${HEADERS})
endif(UNIX)
link_directories(${ILI_EXTERNAL_LIB_DIRS})
target_link_libraries(${PROJECT_NAME} ${ILI_EXTERNAL_LIBS} IliLib PlantModel)
我可以弄清楚为什么没有构建共享对象,当我在 Unix 块中添加一条消息时,它会在构建过程中打印出来。此 cmake 文件的其余部分仅设置变量并声明项目名称。
关于如何调试此问题的任何提示?在 Windows 和 Linux 上,它目前只构建静态库。
解决方案是由@Tsyvarev 提出的,我犯了一个小错误。
正在构建静态库,因为它是另一个构建目标的依赖项。我没有在 SimulatorLib 项目上明确 运行 "Make"。
无论是否正在构建特定项目,CMake 消息都会出现在 CMake 日志中。